数据框按列值过滤行 [英] Dataframe filtering rows by column values

查看:83
本文介绍了数据框按列值过滤行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据框df

       Num1   Num2 
one       1      0
two       3      2
three     5      4
four      7      6
five      9      8

我想过滤在Num1中值大于3而在Num2中值小于8的行.

I want to filter rows that have value bigger than 3 in Num1 and smaller than 8 in Num2.

我尝试过

df = df[df['Num1'] > 3 and df['Num2'] < 8]

但是发生了错误.

ValueError:系列的真值不明确.

ValueError: The truth value of a Series is ambiguous.

所以我用

df = df[df['Num1'] > 3]
df = df[df['Num2'] < 8]

我认为代码可以更短.

还有其他方法吗?

推荐答案

您需要添加(),因为运算符优先于按位运算符&:

You need add () because operator precedence with bit-wise operator &:

df1 = df[(df['Num1'] > 3) & (df['Num2'] < 8)]
print (df1)
       Num1  Num2
three     5     4
four      7     6

更好的解释是此处.

或者如果需要最短的代码,请使用 query :

Or if need shortest code use query:

df1 = df.query("Num1 > 3 and Num2 < 8")
print (df1)
       Num1  Num2
three     5     4
four      7     6


df1 = df.query("Num1 > 3 &  Num2 < 8")
print (df1)
       Num1  Num2
three     5     4
four      7     6

这篇关于数据框按列值过滤行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆