微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-在轴1上具有布尔数组的Pandas loc()方法

我正在尝试使用boolean数组作为参数的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()将布尔数组应用于子集许多列?

解决方法:

您需要通过values将Series转换为numpy数组:

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.columns添加索引以将Series的对齐索引添加到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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐