2017-03-29 7 views
1

パンダのデータフレームをquyeringしていますdfこのようにします。これに代えて pandasにpythonに相当するものが `all`関数に組み込まれていますか?

if all([ 
    value1 > threshold1, 
    value2 > threshold2, 
    value3 in list3, 
    ]): 

if (
    value1 > threshold1 and 
    value2 > threshold2 and 
    value3 in list3, 
    ): 

んパンダはPythonでallに似た何かを持っている

df = df[ 
    (df.value1 >= threshold1) & 
    (df.value2 >= threshold2) & 
    (df.value3.isin(list3)) 
    ] 

Pythonはこの構文を許可する機能all、に建てられたのか?ありがとう。

また、これは複数の条件に基づいてパンダのデータフレームをサブセット化する最も速い方法ですか?

+0

本当にALL' 'のためのユースケースではなく、通常はI 'と'でそれを書きます。 –

+0

'all'のユースケースは何ですか?ありがとう。 –

+2

'all(some_iterableのxのための条件(x)) 'のようなものです。 –

答えて

4

@juanpa.arrivillaga既に、あなたにはファンダのインデックス作成に関する非常に良い説明があります。

私はあなたに少しよりよい選択肢を与えたいのですが - DataFrame.query()方法:

df.query("value1 > @threshold1 and value2 > @threshold2 and value3 in @list3") 

デモ:

In [138]: df = pd.DataFrame(np.random.randint(1, 10, (10, 3)), 
          columns=['value1','value2','value3']) 

In [139]: df 
Out[139]: 
    value1 value2 value3 
0  7  9  1 
1  4  1  3 
2  3  8  8 
3  2  8  9 
4  9  2  7 
5  5  8  9 
6  4  2  9 
7  7  2  5 
8  6  3  5 
9  9  1  5 

In [140]: threshold1 = 2 

In [141]: threshold2 = 4 

In [142]: list3 = [1,9] 

In [143]: df.query("value1 > @threshold1 and value2 > @threshold2 and value3 in @list3") 
Out[143]: 
    value1 value2 value3 
0  7  9  1 
5  5  8  9 
関連する問題