python - 在 Pandas 数据框 boolean 索引中使用 "opposite boolean"的正确方法

标签 python pandas indexing boolean

我想使用 boolean 索引,检查我的数据框中特定列具有NaN 值的行。所以,我做了以下事情:

import pandas as pd
my_df.loc[pd.isnull(my_df['col_of_interest']) == False].head()

查看该数据框的片段,仅包括不是 NaN 的值(大多数值是 NaN)。

它有效,但似乎不够优雅。我想输入:

my_df.loc[!pd.isnull(my_df['col_of_interest'])].head()

但是,这产生了一个错误。我也花了很多时间在 R 上,所以也许我把事情弄糊涂了。在 Python 中,我通常会尽可能地使用语法“not”。例如,if x is not none:,但我在这里做不到。有没有更优雅的方式?我不喜欢进行无意义的比较。

最佳答案

一般来说,对于 pandas(和 numpy),我们使用按位非 ~ 而不是 !not(其行为不能被类型覆盖)。

虽然在这种情况下我们有 notnull,但在没有特殊相反方法的情况下,~ 可以派上用场。

>>> df = pd.DataFrame({"a": [1, 2, np.nan, 3]})
>>> df.a.isnull()
0    False
1    False
2     True
3    False
Name: a, dtype: bool
>>> ~df.a.isnull()
0     True
1     True
2    False
3     True
Name: a, dtype: bool
>>> df.a.notnull()
0     True
1     True
2    False
3     True
Name: a, dtype: bool

(为了完整起见,我会注意到 -,一元否定运算符,也适用于 boolean 系列,但 ~ 是规范的选择, - 已弃用 numpy boolean 数组。)

关于python - 在 Pandas 数据框 boolean 索引中使用 "opposite boolean"的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33512372/

相关文章:

python - 自动修复 python 缩进错误

python - 颜色必须是 RGB 十六进制值?

mysql - 读/写速度是否取决于索引?

postgresql - B-Tree 和 GiST 索引方法(在 PostgreSQL 中)有什么区别?

postgresql - Postgres 全文搜索忽略 url

python - 尝试在 Python 中使用 bcp 将 CSV 上传到数据库时出现问题

python - 无尽的 while 循环困惑

python - 生成随机颜色 (RGB)

python - 将 pandas 数据框合并到新索引级别下

python - 如何将 pandas 数据框中存在的列中的单词替换为同一列中的另一个单词?