条件付きのPandas DataframeのフィルタリングをPEP8に準拠させるにはどうすればよいですか?

2020-06-30 pandas pylint pep8

このような条件でPandas Dataframeをフィルタリングすることはかなり標準的なようです

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

PyCharmによると、これはPEP 8に準拠しておらず、Pylintを使用してこのメ​​ッセージが表示されます

C0121:Trueとの比較は単なる 'expr'(singleton-comparison)

これを行うためのPEP 8フレンドリーな方法はありますか?

Answers

==演算子がその効果を変更するためにオーバーロードされているケースですか?それはそうです。はいの場合、明らかにリンティングツールはこれを認識しにくく、意味のあるアドバイスを提供します。

個人的には、意味(セマンティクス)を変えるオペレーターのオーバーロードのファンではありません。彼らはコードの読み方を変更し、混乱するか、少なくともあいまいであるため、それらは避けます。

多分私は、同じあいまいな表記を維持し、その命令の特定のリンティングエラーを無効にすることをお勧めします。

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

または、より明示的な表記法を使用します(私はパンダに慣れていないため、次のコードは保証しませんが、少なくともこの考えは、 パンダだけでなく、あらゆるコンテキストにある程度適用できるはずです)。

  • filter_ = df.eq(True) [ doc ]
  • filter_ = df.bool (これについては本当にfilter_ = df.boolません)[ doc ]

Related