Pandas loc()方法,轴1上有布尔数组

时间:2017-01-06 18:03:20

标签: python arrays pandas boolean loc

我正在尝试使用Pandas <img src="switch/3.jpg" class="homeImg"> 方法,与布尔数组一起用作参数。

我创建了一个小数据框来玩:

loc()

在轴1上使用的布尔数组,用于对多个列进行子集化:

    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

然后我尝试了:

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

我收到错误消息:

  

IndexingError:提供了无法对齐的布尔系列键

如何应用布尔数组以 df.loc[: , a1]

为多个列进行子集化

1 个答案:

答案 0 :(得分:4)

您需要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

或者需要在index之前添加df.columns,以便indexSeries columns DataFrame的对齐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

' '.join(["phd", "in", "everything"])