Python 如何从满足条件a或B的数据帧中选择数据?

Python 如何从满足条件a或B的数据帧中选择数据?,python,pandas,dataframe,Python,Pandas,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 ... 我想将数据帧

我看到了一些很好的帖子,它们完美地回答了我的标题问题(包括),但我的处境更为特殊

假设我有以下非常简单的数据帧

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
...
我想将数据帧限制为param为None或4的数据。我尝试了以下技巧

params = [None, 4]
df = df[df['param'].isin(params)]
它仅选择参数为4的数据

显示如何使用
isnull()
方法筛选None值,但它与
isin()
不兼容。。。因此我提出了一个问题。

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

params = [4]
df = df[df['param'].isin(params) | df['param'].isnull()]
您可以对选择器使用“and”和“and”或“or”操作并构造新的选择器。这对你有帮助吗

params = [4]
df = df[df['param'].isin(params) | df['param'].isnull()]
试试这个:

df = df[ (df['param'] == 4) | (df['param'].isna()) ]
试试这个:

df = df[ (df['param'] == 4) | (df['param'].isna()) ]

正如@IMB所指出的,解决方案是使用
params=[“None”,4]
而不是
params=[None,4]


我的数据帧最初包含NaN,我使用
df=df.fillna('None')
将其转换为None。因此是字符串类型。

正如@IMB所指出的,解决方案是执行
params=[“None”,4]
而不是
params=[None,4]


我的数据帧最初包含NaN,我使用
df=df.fillna('None')
将其转换为None。因此是字符串类型。

我认为在这种情况下不能使用
isin
,因为
None
=
None
将返回False。t在这种情况下,isnull和isna方法应该会有所帮助。我认为您的问题在于param属性的None值被定义为String。如果您将其定义为None(nan),它将被代码擦除。如果不是的话,@alexander的答案是有效的。谢谢@IMB,如果我使用params=[“None”,4],它会起作用。我没有意识到我的None是字符串。我认为在这种情况下不能使用
isin
,因为
None
=
None
将返回False。t在这种情况下,isnull和isna方法应该会有所帮助。我认为您的问题在于param属性的None值被定义为String。如果您将其定义为None(nan),它将被代码擦除。如果不是的话,@alexander的答案是有效的。谢谢@IMB,如果我使用params=[“None”,4],它会起作用。我没有意识到我的手上没有绳子。。