Pandas查询空值(None values)

14

我有一个包含不同数据类型的列的数据框,需要使用 pandas.query 来筛选列。

列中可能包含缺失值: NaNNoneNaT,我需要显示包含这些值的行。是否有一种方法可以在传递给 pandas.query 的表达式中实现此操作?我知道可以使用不同的方法来完成,但我想知道是否可以通过 query 进行操作。

对于布尔类型的列,我能够使用以下便捷方法:

df.query('col not in (True, False)')

但这种方法并不适用于其他类型的列。希望能提供任何形式的帮助,包括解决方法。


你能使用 np.isnan 吗? - P. Camilleri
@M.Massias,OP正在寻求与df.query方法兼容的查询语句,问题在于如何传递一个语句,以便使用numexpr按预期工作。 - EdChum
1个回答

17

NaN 不等于自身,因此您可以简单地测试一列是否等于自身来过滤它。虽然我不确定原因,但这似乎也适用于 None,可能是在评估过程中的某个时候强制转换为 NaN

 df.query('col == col')

对于日期时间而言,这个方法可行,但感觉有点不太正式,可能有更好的方法。

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

太遗憾了,第二种方法对于NaN和None无效!然而第一种方法对我来说完美无缺。 - architectonic
对我来说,第二个适用于None。 - Kharthigeyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接