python - 查询数据框,但仅将过滤器应用于列值不是 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")
?
解决方案
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
推荐阅读
- go - 如何将 Unicode 字符更改为简单形式?
- pandas - Pandas/MLP :: 仅在 3 年期间绘制 36 个月而不是 12 个月
- r - 在 R 中,如何根据另一列添加具有 0/1 计数的多列?
- php - 第一次用户登录,上传图片 mkdir() 工作完美,但同一用户上传照片警告:mkdir():文件存在?
- javascript - Adyen 在 React 应用中的 Checkout SDK 集成
- scala - 如何从列表中获取对象
- mysql - 在事务中插入多行,如果其中一个失败,则插入其余行
- java - 我可以检测到用户何时打开其他应用程序吗?
- java - 如何关闭 GUI 窗口并使用 Java 中的内部类打印出一些文本?
- xamarin - 有没有办法可以在我的 Xamarin.Forms 应用程序中访问项目的构建版本?