如何过滤条件符合 PEP8 的 Pandas Dataframe?

How can I make filtering a Pandas Dataframe with a condition conform to PEP8?

用这样的条件过滤 Pandas Dataframe 似乎很标准

filter_ = (df == True)
df = df[filter_]

但根据 PyCharm,这不符合 PEP 8,我使用 Pylint

收到此消息

C0121:与 True 的比较应该只是 'expr'(单例比较)

是否有 PEP 8 友好的方式来做到这一点?

这是 == 运算符被重载以改变其效果的情况吗?看起来是的。如果是,那么显然 linting 工具将很难识别这一点并提供有意义的建议。

就我个人而言,我不喜欢这种改变含义(语义)的运算符重载。我会避免使用它们,因为它们改变了人们阅读代码的方式并且令人困惑或至少模棱两可。

也许我会建议,要么保持相同的模糊符号并禁用该指令的一个特定的 linting 错误:

  • filter_ = (df == True) # pylint: disable=singleton-comparison [doc]

或者使用更明确的表示法(我对pandas不熟悉,所以不保证下面的代码,但至少思路应该是有点适用于任何上下文,不仅 pandas):

  • filter_ = df.eq(True) [doc]
  • filter_ = df.bool(这个真的不太清楚)[doc]