我在切片MultiIndex时遇到了麻烦。我现在已经尝试了几个tecniques,但是除了一个我不能让他们工作的人。 我的DataFrame由以下几行组成:
means[0:2]

我要做的是用基因型拼接我的df。 最简单的方法当然是按索引切片,例如
means.loc[('cre')]
但由于我有多个数据框和更多数据,我正在寻找更优雅的方式。
{{1}}已经为相同的数据帧工作的
(尽管行数较少)并不适合这个,因为它一直给我Keyerror:' cre'
当我尝试使用索引器和其他方法时,我偶然发现我不断收到“#cre;'不在索引中。但是当我试图通过名字而不是水平时,也发生了同样的事情。我无法弄清楚为什么会这样。
如果有人可以帮助我,那就太好了!谢谢!
答案 0 :(得分:0)
pd.IndexSlice
df.loc[pd.IndexSlice[:, 'cre', :], :]
Total DL DM
Mouse Genotype Intensity
455 cre s 15.114886 13.626841 16.602930
w 41.419970 33.916706 48.923234
swaplevel
和loc
要使用loc['cre']
,'cre'
需要位于多索引的第一级。交换级别解决了这个问题。
df.swaplevel(0, 1).loc['cre']
Total DL DM
Mouse Intensity
455 s 15.114886 13.626841 16.602930
w 41.419970 33.916706 48.923234
xs
print df.xs('cre', level=1)
Total DL DM
Mouse Intensity
455 s 15.114886 13.626841 16.602930
w 41.419970 33.916706 48.923234
或
print df.xs('cre', level=1, drop_level=False)
Total DL DM
Mouse Genotype Intensity
455 cre s 15.114886 13.626841 16.602930
w 41.419970 33.916706 48.923234
xs
似乎是最高效的。