首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >pandas数据帧多索引中的select列

pandas数据帧多索引中的select列
EN

Stack Overflow用户
提问于 2014-08-08 02:28:15
回答 2查看 123.3K关注 0票数 81

我有以下pd.DataFrame:

代码语言:javascript
复制
Name    0                       1                      ...
Col     A           B           A            B         ...
0       0.409511    -0.537108   -0.355529    0.212134  ...
1       -0.332276   -1.087013    0.083684    0.529002  ...
2       1.138159    -0.327212    0.570834    2.337718  ...

它有names=['Name', 'Col']和hierarchical级别的MultiIndex列。Name标签从0到n,对于每个标签,有两个AB列。

我想再选择此DataFrame的所有A (或B)列。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-08 02:56:29

有一个get_level_values方法,可以与布尔索引一起使用,以获得预期的结果。

代码语言:javascript
复制
In [13]:

df = pd.DataFrame(np.random.random((4,4)))
df.columns = pd.MultiIndex.from_product([[1,2],['A','B']])
print df
          1                   2          
          A         B         A         B
0  0.543980  0.628078  0.756941  0.698824
1  0.633005  0.089604  0.198510  0.783556
2  0.662391  0.541182  0.544060  0.059381
3  0.841242  0.634603  0.815334  0.848120
In [14]:

print df.iloc[:, df.columns.get_level_values(1)=='A']
          1         2
          A         A
0  0.543980  0.756941
1  0.633005  0.198510
2  0.662391  0.544060
3  0.841242  0.815334
票数 104
EN

Stack Overflow用户

发布于 2014-08-08 03:01:56

EDIT*现在最好的方法是使用indexSlice进行多索引选择

代码语言:javascript
复制
idx = pd.IndexSlice
A = df.loc[:,idx[:,'A']]
B = df.loc[:,idx[:,'B']]
票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25189575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档