pandas查询无值

时间:2015-08-25 14:50:50

标签: python pandas

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

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

来实现

对于布尔列,我可以通过声明:

来使用解决方法
df.query('col not in (True, False)')

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

1 个答案:

答案 0 :(得分:8)

NaN不等于它自己,所以你可以简单地测试一个列是否等于它自己来过滤它。这似乎也适用于None,虽然我不确定原因,但在评估过程中某些时候可能会被投射到NaN

 df.query('col == col')

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

df.query('col not in [@pd.NaT]')