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],它会起作用。我没有意识到我的手上没有绳子。。