Pandas使用query函数检查列是否为空

27

我有一个Pandas数据帧,想要使用isnull()或not isnull()条件在其上执行查询函数,如下所示:

我有一个Pandas数据帧,想要使用isnull()或not isnull()条件在其上执行查询函数,如下所示:

In [67]: df_data = pd.DataFrame({'a':[1,20,None,40,50]})
In [68]: df_data
Out[68]:       a
         0   1.0
         1  20.0
         2   NaN
         3  40.0
         4  50.0

如果我使用这个命令:

df_data.query('a isnull', engine='python')

或者这个命令:

df_data.query('a isnull()', engine='python')

我遇到了一个错误:

In [75]: df_data.query('a isnull', engine='python')  
File "<unknown>", line 1    a isnull           
SyntaxError: invalid syntax

In [76]: df_data.query('a isnull()', engine='python')  
File "<unknown>", line 1    a isnull ()           
SyntaxError: invalid syntax

应该怎么做才是正确的呢?

谢谢。

1个回答

55

使用.

a = df_data.query('a.isnull()', engine='python')
print (a)
    a
2 NaN

b = df_data.query('a.notnull()', engine='python')
print (b)
      a
0   1.0
1  20.0
3  40.0
4  50.0

你也可以使用逻辑 NaN != NaN

a = df_data.query('a != a')
print (a)
    a
 2 NaN

b = df_data.query('a == a')
print (b)
      a
0   1.0
1  20.0
3  40.0
4  50.0

3
df_data.query('a.isnull()') 可以在不使用 engine='python' 的情况下正常工作。 - Wassadamo
3
我无法在不加入 engine='python' 参数的情况下让这个工作。 - Priscilla
1
我认为 df_data.query('a.isnull()') 在 Pandas 1.x 中不起作用,不确定是什么导致了这个问题。 - NikoNyrh
1
我真的很喜欢 a == a 这个技巧。 - Daniel Ryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接