Python Pandas:获取列不为空的DataFrame的行

Posted

技术标签:

【中文标题】Python Pandas:获取列不为空的DataFrame的行【英文标题】:Python Pandas: get rows of a DataFrame where a column is not null 【发布时间】:2018-09-15 08:01:07 【问题描述】:

我正在过滤我的 DataFrame,删除特定列的单元格值为 None 的那些行。

df = df[df['my_col'].isnull() == False]

工作正常,但 PyCharm 告诉我:

PEP8:与 False 的比较应该是 'if cond is False:' 或 'if not cond:'

但我想知道如何将它应用到我的用例中?使用“not ...”或“is False”不起作用。我目前的解决方案是:

df = df[df['my_col'].notnull()]

【问题讨论】:

df = df[df['my_col'].notnull()] ? ~ 是非运算符 我还是想知道这与 PEP8 消息有什么关系。 @MohammadAthar 不起作用。正如我的问题中提到的那样。 df = df.dropna(subset=['my_col']) 【参考方案1】:

所以python有短路逻辑运算符notandor。这些在 python 中具有非常特定的含义,不能被覆盖(not 必须返回 boola and/or b 总是返回 ab 或抛出错误。

不过,python 也有可重载的布尔运算符~(非)、&(与)、|(或)和^(异或)。

您可能将它们识别为int 位运算符,但 Numpy(以及因此 pandas)使用它们来执行数组/系列布尔运算。

例如

b = np.array([True, False, True]) & np.array([True, False, False])
# b --> [True False False]
b = ~b 
# b --> [False True True]

所以你想要的是

df = df[~df['my_col'].isnull()]

我同意 PEP8,不要这样做== False

【讨论】:

感谢您的解释和另一个例子。

以上是关于Python Pandas:获取列不为空的DataFrame的行的主要内容,如果未能解决你的问题,请参考以下文章

按列分组,优先选择另一列不为空的行

数据透视表:隐藏两列不为空的行

SQL:如何在 B 列不为空的情况下使用“100”更新 A 列

EXCEL如何通过函数得到一列不为空值的数

sql查询不为空的字段

excel 怎样筛选出 有一个值为空的行