我看到好的帖子可以很好地回答我的职称问题(包括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()
不兼容...因此,我的问题。
答案 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()) ]