2017-03-31 2 views
1

특정 열이 부울 값이 아닌 일련의 부울 값을 반환하는 필터링 함수에 입력되는 데이터 프레임이 있습니다.인덱스 또는 일련의 부울 값 (명령문이 아님)이있는 DataFrame

EG : 내 필터는

0 True, 
1 False, 
2 True 

가 어떻게 내 필터 시리즈가 true 인 경우에만 dataframe 행을 얻을 수 있습니다 반환? 위의 예에서 행 인덱스 1이 제거 된 데이터 프레임을 갖게됩니다. 모두 indexes가 동일한 경우는 boolean indexing 필요

답변

1

:

df = df[boolean_ser] 

그렇지 않은 경우와 아이폰에는 동일합니다

df = df[boolean_ser.values] 

샘플 :

np.random.seed(100) 
df = pd.DataFrame(np.random.randint(10, size=(3, 4)), columns=list('ABCD')) 
boolean_ser = pd.Series([True, False, True], index=df.index) 
print (df) 
    A B C D 
0 8 8 3 7 
1 7 0 4 2 
2 5 2 2 2 
boolean_ser = pd.Series([True, False, True], index=df.index) 
print (boolean_ser) 
0  True 
1 False 
2  True 
dtype: bool 

df1 = df[boolean_ser] 
print (df1) 
    A B C D 
0 8 8 3 7 
2 5 2 2 2 
,451,515,
boolean_ser = pd.Series([True, False, True], index=[8,9,10]) 
print (boolean_ser) 
8  True 
9  False 
10  True 
dtype: bool 

df1 = df[boolean_ser.values] 
print (df1) 
    A B C D 
0 8 8 3 7 
2 5 2 2 2 

목록이 너무 완벽하게 작동합니다 (있는 경우 같은 길이) :

print (boolean_list) 
[True, False, True] 

df1 = df[boolean_list] 
print (df1) 
    A B C D 
0 8 8 3 7 
2 5 2 2 2