使用两列从pandas DataFrame中选择行

时间:2014-11-24 17:08:07

标签: python pandas

我在pandas中有一个DataFrame,我想根据两列的值选择行的子集。

test_df = DataFrame({'Topic' : ['A','A','A','B','B'], 'Characteristic' : ['Population','Other','Other','Other','Other'], 'Total' : [25, 22, 21, 20, 30]})

它按预期工作,并在我使用此代码时返回第一行:

bool1 = test_df['Topic']=='A' 
bool2 = test_df['Characteristic']=='Population'

test_df[bool1 & bool2]

但是当我尝试在一行中完成所有操作时,

test_df[test_df['Topic']=='A' & test_df['Characteristic']=='Population']

我得到“TypeError:无法将dtyped [object]数组与[bool]类型的标量进行比较”

为什么呢?有一个好方法可以一步到位吗?

1 个答案:

答案 0 :(得分:5)

您只需要添加括号:

>>> test_df[(test_df['Topic']=='A') & (test_df['Characteristic']=='Population')]
  Characteristic Topic  Total
0     Population     A     25

或者,您可以使用query方法,以避免重复test_df

>>> test_df.query("Topic == 'A' and Characteristic == 'Population'")
  Characteristic Topic  Total
0     Population     A     25