查询数据框,但仅将过滤器应用于列值不是NaN的行

维加

我有一个数据框df:

num1 | count | count_min | count_max
a    | 10    | 5         | 10
b    | 15    | 6         | 11
c    | 3     | NaN       | NaN

我想过滤掉不在count_min和count_max之间的每个计数。

但是,如果count_min / count_max为NaN,则应保留该行。

最终结果应为:

num1 | count | count_min | count_max
a    | 10    | 5         | 10
c    | 3     | NaN       | NaN

因此,在应用过滤器之前,我需要在查询中使用if / else之类的内容来检查count_min / count_max是否为NaN。

如何使用查询语法来实现此目的,例如:

df = df.query("count >= count_min and count <= count_max")

Mayank porwal

使用Series.betweenSeries.isna

In [4487]: df = df[df['count'].between(df.count_min, df.count_max) | (df.count_max.isna() | df.count_min.isna())]

In [4487]: df
Out[4487]: 
  num1  count  count_min  count_max
0    a     10        5.0       10.0
2    c      3        NaN        NaN

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章