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

12 浏览
0 Comments

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

我正在过滤我的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()]

0
0 Comments

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

在Python中,有一些短路逻辑运算符,如`not`、`and`和`or`。这些运算符在Python中具有非常特定的含义,无法被覆盖重写。其中,`not`必须返回一个布尔值,而`a and/or b`总是返回`a`或`b`,否则会抛出错误。

然而,Python还具有可重载的布尔运算符,如`~`(not)、`&`(and)、`|`(or)和`^`(xor)。你可能会认出它们是整数的按位运算符,但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`。

感谢解释和另一个示例。

0