pandas查询无值

arc*_*nic 9 python pandas

我有一个包含不同dtypes列的数据框,我需要 pandas.query用来过滤列.

列可以包含缺失值:NaN,None并且NaT我需要显示包含此类值的行.有没有办法在传递给的表达式中执行此操作pandas.query?我知道它可以使用不同的方法完成,但我需要知道它是否可以通过query

对于布尔列,我可以通过声明来使用解决方法:

df.query('col not in (True, False)')
Run Code Online (Sandbox Code Playgroud)

但这不适用于其他类型的列.任何帮助表示赞赏,包括解决方法.

chr*_*isb 9

NaN不等于它自己,所以你可以简单地测试一个列是否等于它自己来过滤它.这似乎也适用,None虽然我不确定为什么,它可能会NaN在评估期间的某些时候被抛弃.

 df.query('col == col')
Run Code Online (Sandbox Code Playgroud)

对于日期时间,这可行,但感觉非常hacky,可能有更好的方法.

df.query('col not in [@pd.NaT]')
Run Code Online (Sandbox Code Playgroud)