我正在尝试使用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 举报,一经查实,本站将立刻删除。