繁体   English   中英

如何使用多个布尔条件过滤数据框

[英]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 == 2df.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM