首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Pandas中查询NaN和其他名称

在Pandas中查询NaN和其他名称
EN

Stack Overflow用户
提问于 2014-10-24 03:09:28
回答 7查看 58.7K关注 0票数 75

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

例如,以下代码不起作用:

代码语言:javascript
复制
df.query( '(value < 10) or (value == NaN)' )

我得到了name NaN is not defined (和df.query('value ==NaN')一样)

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

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-10-24 03:28:05

通常,您可以使用@local_variable_name,因此类似于

代码语言:javascript
复制
>>> 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检查。我们有

代码语言:javascript
复制
>>> df.query("(value < 10) or (value == @nan)")
   value
0      3
1      4
2      9

代码语言:javascript
复制
>>> df.query("(value < 10) or (value != value)")
   value
0      3
1      4
2      9
5    NaN
票数 100
EN

Stack Overflow用户

发布于 2019-01-09 04:41:27

根据this answer的说法,您可以使用:

代码语言:javascript
复制
df.query('value < 10 | value.isnull()', engine='python')

我验证了它是有效的。

票数 77
EN

Stack Overflow用户

发布于 2018-08-08 05:46:41

对于value不为null的行

代码语言:javascript
复制
df.query("value == value")

对于value为null的行

代码语言:javascript
复制
df.query("value != value")
票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26535563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档