2017-07-10 54 views

回答

3

對於欄中移除unstack,因爲在版本0.20.0改變groupby describe formatting

df = df.groupby('A').describe().loc[:,(slice(None),['count','mean'])] 
print (df) 

     B   C  
    count mean count mean 
A      
0 4.0 2.5 4.0 9.5 
1 2.0 5.5 2.0 12.5 

MultiI ndex在index中,因此首先刪除:,因爲選擇了所有索引值。

也有加入slice(None),因爲MultiIndex3 levels

df = df.groupby('A').describe().unstack()\ 
    .loc[(slice(None),['count','mean'],slice(None))] 

print (df) 

      A 
B count 0  4.0 
      1  2.0 
    mean 0  2.5 
      1  5.5 
C count 0  4.0 
      1  2.0 
    mean 0  9.5 
      1 12.5 
dtype: float64 

替代方案:在pandas documentation - using slicers

idx = pd.IndexSlice 
df = df.groupby('A').describe().unstack()\ 
    .loc[idx[:,['count','mean'],:]] 

print (df) 
      A 
B count 0  4.0 
      1  2.0 
    mean 0  2.5 
      1  5.5 
C count 0  4.0 
      1  2.0 
    mean 0  9.5 
      1 12.5 
dtype: float64 

df = df.groupby('A').describe().unstack()\ 
    .loc(axis=0)[:,['count','mean'],:] 

print (df) 
      A 
B count 0  4.0 
      1  2.0 
    mean 0  2.5 
      1  5.5 
C count 0  4.0 
      1  2.0 
    mean 0  9.5 
      1 12.5 
dtype: float64 

更多信息。

+0

查看編輯答案。 – jezrael

+0

是的,這是不安分的,改變了行爲。 – Merlin

+0

是的,確切地說。取消重新整形數據框並在索引中創建MultiIndex。 – jezrael