假设我有一个包含value
列的dataframe df
,其中包含一些浮点值和一些NaN
。如何使用查询语法获取其中包含NaN
的那部分数据帧
例如,以下代码不起作用:
df.query( '(value < 10) or (value == NaN)' )
我得到了name NaN is not defined
(和df.query('value ==NaN')
一样)
一般来说,有没有办法在查询中使用numpy名称,比如inf
,nan
,pi
,e
等?
发布于 2014-10-24 03:28:05
通常,您可以使用@local_variable_name
,因此类似于
>>> pi = np.pi; nan = np.nan
>>> df = pd.DataFrame({"value": [3,4,9,10,11,np.nan,12]})
>>> df.query("(value < 10) and (value > @pi)")
value
1 4
2 9
可以工作,但是nan
不等于它自己,所以value == NaN
将始终为false。解决这个问题的一种方法是使用这一事实,并使用value != value
作为isnan
检查。我们有
>>> df.query("(value < 10) or (value == @nan)")
value
0 3
1 4
2 9
但
>>> df.query("(value < 10) or (value != value)")
value
0 3
1 4
2 9
5 NaN
发布于 2019-01-09 04:41:27
发布于 2018-08-08 05:46:41
对于value
不为null的行
df.query("value == value")
对于value
为null的行
df.query("value != value")
https://stackoverflow.com/questions/26535563
复制相似问题