[英]How to filter dataframe with multiple boolean conditions
我需要用两个布尔查询过滤一个熊猫数据框,这意味着我想保留那些为True
数据框:
import numpy as np
df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
columns=['a', 'b', 'c'])
输出:
a b c
0 1 2 3
1 4 5 6
2 7 8 9
单过滤器工作:
filter = (df.b == 2)
df = df[filter]
输出:
a b c
0 1 2 3
但是如何使用df.b == 2
或df.b == 5
过滤?
我试过:
filter = [(df['b']==2) | (df['b']==5)]
df = df[filter]
print(df)
我得到:
ValueError: Item wrong length 1 instead of 3
任何建议如何实现它?
我想要的输出是:
a b c
0 1 2 3
1 4 5 6
您将list
作为过滤器传递,试试这个:(最好不要使用filter
作为变量,它是python中的built-in function
)
mask = ((df['b']==2) | (df['b']==5))
df = df[mask]
您可以使用.inin()
作为替代解决方案,如下所示:
mask = [2,5]
df = df[df['b'].isin(mask)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.