我有一个具有不同dtype列的数据框架,我需要使用pandas.query
来过滤列。
列可以包括缺失的值:NaN
、None
和NaT
,我需要显示包含这些值的行。是否有一种方法可以在传递给pandas.query
的表达式中做到这一点?我知道它可以使用不同的方法完成,但我需要知道它是否可以通过query
对于布尔列,我可以使用一种变通方法:
df.query('col not in (True, False)')
,但这不适用于其他类型的列。
NaN
不等于它自己,所以您可以简单地测试一个列是否等于它自己来过滤它。这似乎也适用于None
,尽管我不确定为什么,它可能在评估过程中的某个时刻被转换为NaN
。
df.query('col == col')
对于日期时间,这是有效的,但是感觉很粗糙,可能有更好的方法。
df.query('col not in [@pd.NaT]')