如何从满足条件A或B的pandas DataFrame中选择数据?

时间:2020-06-08 15:02:31

标签: python pandas dataframe

我看到好的帖子可以很好地回答我的职称问题(包括this one),但是我的处境更加具体。

假设我有以下非常简单的DataFrame

df.head()

   param  accuracy
0    None       98
1    4.0        100
2    5.0        95
3    6.0        87
4    7.0        56
5    8.0        45
6    9.0        59
7    None       96
...

我想将DataFrame限制为参数为None或4的数据。我尝试了以下技术

params = [None, 4]
df = df[df['param'].isin(params)]

仅选择param为4的数据。

This post显示了如何使用isnull()方法过滤None值,但它与isin()不兼容...因此,我的问题。

3 个答案:

答案 0 :(得分:1)

您可以在选择器上使用“ and”和“ or”操作并构造新的选择器。这对您有帮助吗?

params = [4]
df = df[df['param'].isin(params) | df['param'].isnull()]

答案 1 :(得分:1)

@IMB指出,解决方案是执行params = ["None", 4]而不是params = [None, 4]

我的数据框最初包含NaN,然后​​用df = df.fillna('None')转换为None。因此是String类型。

答案 2 :(得分:0)

尝试一下:

df = df[ (df['param'] == 4) | (df['param'].isna()) ]
相关问题