当前位置: 首页 > 知识库问答 >
问题:

如何使用多个布尔条件选择DataFrame中的特定列

柴英博
2023-03-14

我正试图找到一个非常好的,全面的回答上述问题。

让我们使用以下数据帧:

df = pd.DataFrame(np.random.randn(4,4), columns=['A', 'B', 'C', 'D'])
df['Category'] = pd.Series(['Cat1', 'Cat2', 'Cat1', 'Cat2'])
df:
            A         B         C         D Category
  0  0.057456  0.462712 -1.245539  0.095947     Cat1
  1  0.741688  0.353600  1.130754 -1.692440     Cat2
  2  0.638623 -0.109566  0.118509 -0.692661     Cat1
  3 -0.905806  0.284818 -0.094696 -1.325617     Cat2

我理解使用df的基本术语。Adf['A']选择列Adf[['A','B']选择列AB

如果我想传递布尔条件,我可以做类似df[df这样的事情。一个

但有一件事我没有看到,那就是我如何使用上面使用的两个相同的布尔条件来选择dataframe列的子集。

我尝试过的两种方法都没有成功:

df['B'].where(df.A > 0)

这将返回索引中的所有行,而我只希望为上述条件返回True的行。

我也尝试过使用query,但没有成功,因为它不能用于一个系列。

所以df['A']。查询(某些条件)返回错误消息。

理想情况下,我正在寻找的解决方案具有以下条件:

  1. 可以在单列或多列上使用。也就是说,您可以使用它选择df['A']df['B']

谢谢你。


共有3个答案

轩辕源
2023-03-14

您正在正确地使用df['B']。何处(df.A)

具有多个(也可以通过单个)条件的示例:

df[['B','C']].where((df.A > 1) & (df.D>0)).dropna().reset_index(drop=True)

高增
2023-03-14

使用query,只是@W-B答案的一个变体:

df.query('A > 0 and B < 0').loc[:, ['B', 'C']]

或者

df.query('A > 0 and B < 0')[['B', 'C']]

也会打印

          B         C
2 -0.109566  0.118509
百里修真
2023-03-14

我想你在找。loc

df.loc[df.A>0,'B']
0    0.462712
1    0.353600
2   -0.109566
Name: B, dtype: float64
df.loc[(df.A>0)&(df.B<0),['B','C']]
          B         C
2 -0.109566  0.118509
 类似资料:
  • 问题内容: 现在,我知道如何检查数据框中多列中的特定值。但是,我似乎无法弄清楚如何基于布尔响应执行if语句。 例如: 使用和遍历目录并将特定文件读入数据框。 现在检查跨多个列的数据框。第一个值是列名(column1),下一个值是我在该列(香蕉)中寻找的特定值。然后,我正在检查另一列(column2)的特定值(绿色)。如果这两个都是正确的,我想执行一项特定的任务。但是,如果它是错误的,我想做其他事情

  • 问题内容: 如何选择多个文件? 问题答案: 在HTML5中,您可以添加multiple属性以选择多个文件。 旧答案: 每个只能选择1个文件。如果要发送多个文件,则必须使用多个输入标签或使用Flash或Silverlight。

  • 我有一个熊猫数据框,大约有50列和

  • 问题内容: 我有两个这样的表,两个都是单独的表 另一个表包含以下结构 我需要从表II中选择AccountNo或TempAccountNo,Mycolumn,条件是 我需要选择 我需要选择 我该如何实现。 问题答案:

  • 我试图使用JPA标准编写以下查询,但我无法选择子查询中的多列。 我陷入了下面的实现过程中,无法找到如何在子查询中选择多个列。请看我在代码中的评论(第三行)。 请帮我解决这个问题。

  • 问题内容: 给定以下示例表架构 客户表 发票表 目的是选择InvoiceID值为10和20(非OR)的所有客户。因此,在此示例中,将返回带有CustID = 1和2的客户。 您将如何构造SELECT语句? 问题答案: 使用: 关键是需要计数等于子句中参数的数量。 的使用是在对帐务编号和发票编号的组合没有唯一约束的情况下- 如果没有重复的机会,则可以从查询中省略DISTINCT: