当前位置: 首页 > 面试题库 >

在pandas中查询NaN和其他名称

邓光赫
2023-03-14
问题内容

说我有一个数据框,df其中的列包含value一些浮点值和一些NaN。如何NaN 使用查询语法 获取数据框的一部分?

例如,以下内容不起作用:

df.query( '(value < 10) or (value == NaN)' )

我得到name NaN is not defined(与相同df.query('value ==NaN')

一般来说,有没有办法使用查询numpy的名称,如infnanpie,等?


问题答案:

通常,您可以使用@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总是错误的。解决这个问题的一种方法是使用该事实,并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


 类似资料: