我很难从MultiIndex中选择pandas 0.14.1 (我知道这是旧版本,但我的选择是有限的)。
我需要根据索引标签进行选择.
对于一个级别的索引选择,与重复很好
(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对于多级索引选择以不同的方式工作,只采用唯一值。
(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行。
发布于 2017-08-24 16:31:38
我能想到的最好不过了。请注意,这会因为许多原因而爆炸,我完全希望你能回来,“但这并不适用于我的真实数据。”
选项1
这将永远有效,但可能并不总是你所期望的那样。
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
如果您的第一个级别值本身并不是唯一的,那么这个值就会中断。
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 21https://stackoverflow.com/questions/45866278
复制相似问题