pandas:使用多个列值过滤行

时间:2017-01-12 19:14:50

标签: python python-3.x pandas dataframe filter

我根据给定列的值过滤出数据帧的某些行,如下所示:

new_df = my_df.loc[my_df['A_count'] == 0.0]

代码工作正常。然后我尝试使用以下两列中的值过滤掉行:

new_df = my_df.loc[my_df['A_count'] == 0.0 & my_df['B_count'] == 0.0 ]

然后代码给了我错误:

TypeError: cannot compare a dtyped [float64] array with a scalar of type [bool]

如何使用多个列的值实际执行过滤器?谢谢!

1 个答案:

答案 0 :(得分:2)

正如@root所指出的......这是有效的

new_df = my_df.loc[(my_df['A_count'] == 0.0) & (my_df['B_count'] == 0.0)]

但是,您也可以使用query
我喜欢query,因为它会自动为您过滤,查询语法通常非常直观。注意缺少括号。

my_df.query('A_count == 0 & B_count == 0')