pandas使用查询函数检查列是否为null

use*_*057 11 python null dataframe pandas

我有pandas数据帧,我想在它上执行查询函数与isnull()或不是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
Run Code Online (Sandbox Code Playgroud)

如果我使用此命令:

df_data.query('a isnull', engine='python')
Run Code Online (Sandbox Code Playgroud)

或者这个命令:

df_data.query('a isnull()', engine='python')
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

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
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

谢谢.

jez*_*ael 20

用途.:

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
Run Code Online (Sandbox Code Playgroud)

您也可以使用逻辑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
Run Code Online (Sandbox Code Playgroud)

  • `df_data.query('a.isnull()')` 在没有 engine='python' 的情况下工作 (4认同)
  • 如果没有 engine='python' 我就无法让它工作 (3认同)
  • 我认为 `df_data.query('a.isnull()')` 在 Pandas 1.x 中不起作用,不确定是什么破坏了它。 (2认同)