数据框按列值过滤行 [英] Dataframe filtering rows by column values
本文介绍了数据框按列值过滤行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个数据框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屋!
查看全文