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

Mat*_*ias 6 python dataframe pandas

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

df = df[df['my_col'].isnull() == False]
Run Code Online (Sandbox Code Playgroud)

工作正常,但 PyCharm 告诉我:

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

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

df = df[df['my_col'].notnull()]
Run Code Online (Sandbox Code Playgroud)

FHT*_*ell 10

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

但是,python 也有可重载的布尔运算符~(not)、&(and)、|(or) 和^(xor)。

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

例如

b = np.array([True, False, True]) & np.array([True, False, False])
# b --> [True False False]
b = ~b 
# b --> [False True True]
Run Code Online (Sandbox Code Playgroud)

因此你想要的是

df = df[~df['my_col'].isnull()]
Run Code Online (Sandbox Code Playgroud)

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