我有一个包含不同dtypes列的数据框,我需要使用pandas.query
来过滤列。
列可能包含缺失值:NaN
,None
和NaT
,我需要显示包含此类值的行。有没有办法在传递给pandas.query
的表达式中执行此操作?我知道可以使用不同的方法完成,但我需要知道它是否可以通过query
对于布尔列,我可以通过声明:
来使用解决方法df.query('col not in (True, False)')
但这不适用于其他类型的列。任何帮助表示赞赏,包括解决方法。
答案 0 :(得分:8)
NaN
不等于它自己,所以你可以简单地测试一个列是否等于它自己来过滤它。这似乎也适用于None
,虽然我不确定原因,但在评估过程中某些时候可能会被投射到NaN
。
df.query('col == col')
对于日期时间,这可行,但感觉非常hacky,可能有更好的方法。
df.query('col not in [@pd.NaT]')