Python 轴1上带有布尔数组的loc()方法

Python 轴1上带有布尔数组的loc()方法,python,arrays,pandas,boolean,loc,Python,Arrays,Pandas,Boolean,Loc,我正在试验Pandasloc()方法,该方法使用布尔数组作为参数 我创建了一个小数据框来使用: 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

我正在试验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:提供了不可对齐的布尔系列键


如何将布尔数组应用于带有
loc()
的多个列的子集?

您需要通过以下方式将
系列
转换为
numpy数组

或者需要通过
df.columns
添加
索引
,以便将
系列的
索引
对齐到
数据框的

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
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