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。
| 归档时间: |
|
| 查看次数: |
9705 次 |
| 最近记录: |