[英]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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.