2017-03-31 4 views
1

特定の列が一連のブール値(ブールステートメントではない)を返すフィルタリング関数に供給されるデータフレームがあります。インデックスまたはリストの一連のブール値(ステートメントではない)

EG:私のフィルタは

0 True, 
1 False, 
2 True 

がどのように私は私のフィルターシリーズは真であるのみデータフレームの行を取得することができます返しますか? 上記の例では、行インデックス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 

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 
関連する問題