首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按重复标签从MultiIndex中选择

按重复标签从MultiIndex中选择
EN

Stack Overflow用户
提问于 2017-08-24 16:01:28
回答 1查看 50关注 0票数 2

我很难从MultiIndex中选择pandas 0.14.1 (我知道这是旧版本,但我的选择是有限的)。

我需要根据索引标签进行选择.

对于一个级别的索引选择,与重复很好

代码语言:javascript
复制
(pd.DataFrame
.from_records({'A' : [1,2,3], 'B' : [11,12,13]})
.set_index('A')
).loc[idx[1,1,1,2,1], :]

    B
A    
1  11
1  11
1  11
2  12
1  11

对于多级索引选择以不同的方式工作,只采用唯一值

代码语言:javascript
复制
(pd.DataFrame
.from_records({'A' : [1,2,3], 'B' : [11,12,13], 'C' : [21,22,23]})
.set_index(['A', 'B'])
).loc[idx[[1,1,1,2,1], :], :]

       C
A B     
1 11  21
2 12  22

问题:是否仍然可以使用多个索引,但可以从单级索引中保留选择行为?预期的输出类似于单个索引,因此返回5行,而不是2行。

EN

回答 1

Stack Overflow用户

发布于 2017-08-24 16:31:38

我能想到的最好不过了。请注意,这会因为许多原因而爆炸,我完全希望你能回来,“但这并不适用于我的真实数据。”

选项1

这将永远有效,但可能并不总是你所期望的那样。

代码语言:javascript
复制
pd.concat([df.xs(i, drop_level=False) for i in [1, 1, 1, 2, 1]])

       C
A B     
1 11  21
  11  21
  11  21
2 12  22
1 11  21

选项2

如果您的第一个级别值本身并不是唯一的,那么这个值就会中断。

代码语言:javascript
复制
df.iloc[df.index.get_level_values(0).searchsorted([1, 1, 1, 2, 1])]

       C
A B     
1 11  21
  11  21
  11  21
2 12  22
1 11  21
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45866278

复制
相关文章

相似问题

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