2017-01-06 47 views
2

我正在試驗使用布爾數組作爲參數的Pandas loc()方法。使用帶有布爾數組的軸1上的Pandas loc()方法

我創建了一個小數據幀一起玩:

col1 col2 col3 col4 
0 a  1  2  3 
1 b  NaN  NaN  6 
2 c  NaN  8  9 
3 d  NaN  11  12 
4 e  13  14  15 
5 f  17  18  19 
6 g  21 2 2  23 

和布爾陣列爲使用軸1到子集的數列:

a1 = pd.Series([True, False, True, False]) 

我然後嘗試:

df.loc[: , a1] 

我收到了錯誤信息:

IndexingError: Unalignable boolean Series key provided

如何將布爾數組應用於loc()的許多列的子集?

回答

2

您需要通過values轉換Seriesnumpy array

print (df.loc[: , a1.values]) 
    col1 col3 
0 a 2.0 
1 b NaN 
2 c 8.0 
3 d 11.0 
4 e 14.0 
5 f 18.0 
6 g 2.0 

還是需要通過df.columnsSeries對準index添加indexcolumnsDataFrame的:

a1 = pd.Series([True, False, True, False], index=df.columns) 
print (df.loc[: , a1]) 
    col1 col3 
0 a 2.0 
1 b NaN 
2 c 8.0 
3 d 11.0 
4 e 14.0 
5 f 18.0 
6 g 2.0