我一直在努力找出处理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?
答案 0 :(得分:3)
我找到了几个简单的答案:
QMainWindow*
另一个:
g.xs('mean', level=1)
答案 1 :(得分:2)
您应该阅读有关多索引数据框的文档。 IndexSlice是处理这个问题的方法。这样的事情应该有效。
import pandas as pd
idx = pd.IndexSlice
g.loc[idx[:,"mean"],:]
答案 2 :(得分:1)
您可以在多索引中交换索引的顺序:
g.reorder_levels([1,0]).loc['mean']
# B
#A
#0.0 0.515745
#1.0 0.451534
#2.0 0.483014
答案 3 :(得分:1)
你也可以这样做
g.loc[:, ("B", "mean")]
A
0.0 0.381882
1.0 0.450356
2.0 0.497692
Name: (B, mean), dtype: float64