簡體   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