使用布尔语句来解决Pandas系列问题

时间:2014-01-20 15:17:39

标签: python pandas

我在Pandas DF中有一些数据,并希望根据一些布尔条件来隔离它的特定部分。以下两行按照我的要求工作:

df['test'] = df[df.N == 30].my_variable
df['test2'] = df[df.Y >0.4].my_variable

不熟悉熊猫,然后我试着写:

df['test'] = df[df.N == 30 & df.Y >0.4].my_variable

但是这会引发以下错误:

  

TypeError:输入类型不支持ufunc'bitwise_and',和   输入无法安全地强制转换为任何支持的类型   根据施法规则''安全''

任何人都可以建议正确(或更好)的方式来实现我想要做的事情吗?

1 个答案:

答案 0 :(得分:2)

如上所述,您可以用括号括起来强制使用正确的优先级:

df[(df.N == 30) & (df.Y > 0.4)].my_variable

值得一提的是,您可以使用loc(我认为稍微清洁一点):

df.loc[(df['N'] == 30) & (df['Y'] > 0.4), 'my_variable']