2017-03-29 4 views
1

팬더 데이터 프레임을 quyering하고 있습니다. df 이렇게합니다. 대신이의 팬더에 'all'함수가 내장 된 파이썬이 있나요?

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

:

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

합니까 팬더는 파이썬에서 all 비슷한을

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

파이썬은이 구문을 허용 기능 all, 내장되어? 감사.

또한 여러 조건을 기반으로 팬더 데이터 프레임을 하위 집합하는 가장 빠른 방법입니까?

+0

정말 보통 all''에 대한 사용 사례 아니며, '와'를 써서 쓰겠습니다. –

+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