Python 查询无值

Python 查询无值,python,pandas,Python,Pandas,我有一个包含不同数据类型列的数据框,我需要使用pandas.query来过滤这些列 列可能包含缺少的值:NaN、None和NaT,我需要显示包含这些值的行。在传递给pandas.query的表达式中是否有这样做的方法?我知道可以使用不同的方法来完成,但我需要知道通过查询是否可行 对于布尔列,我可以使用一种变通方法,说明: df.query('col not in (True, False)') 但这不适用于其他类型的列。非常感谢您的帮助,包括解决方法。NaN不等于其本身,因此您可以简单地测试列

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

列可能包含缺少的值:
NaN
None
NaT
,我需要显示包含这些值的行。在传递给
pandas.query的表达式中是否有这样做的方法?我知道可以使用不同的方法来完成,但我需要知道通过
查询是否可行

对于布尔列,我可以使用一种变通方法,说明:

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

但这不适用于其他类型的列。非常感谢您的帮助,包括解决方法。

NaN
不等于其本身,因此您可以简单地测试列是否等于其本身以过滤它。这似乎也适用于
None
,虽然我不知道为什么,但在评估过程中的某个时候,它可能会被转换为
NaN

 df.query('col == col')
对于datetimes,这是可行的,但感觉很粗糙,可能有更好的方法

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

你能使用
np.isnan
?@M.Massias OP要求一个与
df.query
方法兼容的查询语句,这里的问题是如何使用
numexpr
传递一个可以正常工作的语句太糟糕了,第二种方法不适用于NaN和None!然而,第一个对我来说非常有效,第二个对我来说毫无作用。