繁体   English   中英

Dataframe访问MultiIndex的第二级

[英]Dataframe access second level of MultiIndex

我一直在试图找出处理multiIndex的最佳方法。 特别是当我想在multiIndex的第二级访问某些值时。 例如:

df = pd.DataFrame([np.random.randint(3,size=20),np.random.rand(20)]).T
df.columns = ['A','B']
g = df.groupby('A').describe()

假设我试图查看此输出的平均值。 我可以这样做:

idx = [True if a[1]=='mean' else False for a in g.index.tolist()]
p.loc[idx,:]

它有效但必须有更好的方法来做到这一点。 有没有更好的方法来访问二级multiIndex?

我找到了几个简单的答案:

g.xs('mean', level=1)

另一个:

idx = pd.IndexSlice
g.loc[idx[:,'mean'],:]

您应该阅读有关多索引数据框的文档。 IndexSlice是处理这个问题的方法。 这样的事情应该有效。

import pandas as pd
idx = pd.IndexSlice
g.loc[idx[:,"mean"],:]

您可以在多索引中交换索引的顺序:

g.reorder_levels([1,0]).loc['mean']
#            B
#A            
#0.0  0.515745
#1.0  0.451534
#2.0  0.483014

你也可以这样做

g.loc[:, ("B", "mean")]

  A
0.0    0.381882
1.0    0.450356
2.0    0.497692
Name: (B, mean), dtype: float64

使用分层索引检查高级索引

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM