私はパンダで作業しており、複数のフィールドにわたって複数のフィルタをデータフレームに適用したいと考えています。パンダ:複数の列のフィルタ
私は別のより複雑なデータフレームで作業していますが、私はこの質問のためにcontexを単純化しています。ここではサンプルデータフレームのためのセットアップは次のとおりです。このデータフレームに一つのフィルタを適用する
dates = pd.date_range('20170101', periods=16)
rand_df = pd.DataFrame(np.random.randn(16,4), index=dates, columns=list('ABCD'))
十分に文書化し、シンプルさ:
rand_df.loc[lambda df: df['A'] < 0]
ラムダは、単純なブール式のように見えるので。次のことをするのは魅力的です。ブール式ではなく、呼び出し可能なので、これは機能しません。複数のブール式をブール式として組み合わせることはできません。
rand_df.loc[lambda df: df['A'] < 0 and df[‘B’] < 0]
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-31-dfa05ab293f9> in <module>()
----> 1 rand_df.loc[lambda df: df['A'] < 0 and df['B'] < 0]
これを正常に実装するには2つの方法があります。潜在的な回答にそれらを追加するので、ソリューションとして直接コメントすることができます。しかし、私はこれらのどちらもパンダのデータフレームをフィルタリングするための非常に標準的なアプローチであるとは本当に確信していないので、他のアプローチを募集したいと思います。ここで
UN-DUPLICATEを使用して評価をスピードアップすることができます。これは重複としてラベル付けされた質問は、私の質問に答えません。しかし、これほどきれいではありません。この質問には、データがCSVから読み込まれるなどの余分な文脈があります。これはきれいな例です。ここでコードを自分のREPLに直接貼り付け、回答を出して投稿することができます。非常に短期間では、この質問には重複した候補者よりも多くの回答がありました。したがって、私は再開するのが理にかなっていると思います。 –
質問は全く同じで、重複した回答はpandasの作成者によって書かれたので、データフレームをフィルタリングする最良の方法であると確信しています。 – DJK
ありがとうございます。私はWes McKinneyが答えたPandasの質問に特別な重みを付けるべきだと謙虚に指摘しました。 –