• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

在 pandas 查询NaN和其他名称

用户头像
it1352
帮助1

问题说明

说我有一个数据框df,其中的列value包含一些浮点值和一些NaN.

Say I have a dataframe df with a column value holding some float values and some NaN. How can I get the part of the dataframe where we have NaN using the query syntax?

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

The following, for example, does not work:

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

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

一般来讲,有什么方法可以在查询中使用numpy名称,例如infnanpie等吗?

Generally speaking, is there any way to use numpy names in query, such as inf, nan, pi, e, etc.?

正确答案

#1

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

In general, you could use @local_variable_name, so something like

>>> 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检查.我们有

would work, but nan isn't equal to itself, so value == NaN will always be false. One way to hack around this is to use that fact, and use value != value as an isnan check. We have

>>> 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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /reply/detail/tanhcfieac
系列文章
更多 icon
同类精品
更多 icon
继续加载