如何在 Pandas 查询中插入 isna() 子句

use*_*077 3 python-3.x pandas

我想使用 Pandas 中的 .query() 方法创建 isna() 子句

但我收到错误。

对于可重现的示例:

import pandas as pd
import seaborn as sns

mpg = sns.load_dataset('mpg')

mpg[mpg['cylinders'].isna()] # This works

mpg.query('cylinders.isna()') # This raises an exception
TypeError: 'Series' objects are mutable, thus they cannot be hashed
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 7

使用参数engine='python'更改默认值engine='numexpr'

print(mpg.query('cylinders.isna()', engine='python'))
Run Code Online (Sandbox Code Playgroud)

样本

mpg = pd.DataFrame({'cylinders':['a', np.nan]})
print(mpg)
  cylinders
0         a
1       NaN

print(mpg.query('cylinders.isna()', engine='python'))
  cylinders
1       NaN
Run Code Online (Sandbox Code Playgroud)

有关更多信息,query参阅使用 pd.eval() 在 pandas 中动态求值