2017-04-02 112 views
2

我得到了與年和月像下面大熊貓多指標數據框 - 從一個索引選擇最大的內多指標

 |  |Value 
Year |Month| 
    | 1 | 3 
1992 | 2 | 5 
    | 3 | 8 
    | ... | ... 
1993 | 1 | 2 
    | ... | ... 

我想選擇的最大值每年多指數數據幀並提出,在一個DF這樣的:

 | Max 
Year | 
1992 | 5 
1993 | 2 
    | ... 

上沒多指標多的信息,我應該簡單地做一個GROUP BY和應用或類似的東西,使其更簡單嗎?

+0

請雖然解決您的例子:有沒有辦法對1992年的最大值可以爲5,因爲它是在月= 3 8。你在尋找max還是idxmax(本月給出最大的最大值?) – smci

回答

4

完全正確:

df.groupby(level=0).apply(max) 

在我的示例DataFrame

 
        0 
Caps Lower    
A a  0 0.246490 
      1 -1.265711 
      2 -0.477415 
      3 -0.355812 
      4 -0.724521 
    b  0 -0.409198 
      1 -0.062552 
      2 -0.731789 
      3 1.131616 
      4 0.085248 
B a  0 0.193948 
      1 2.010710 
      2 0.289300 
      3 0.305373 
      4 1.376965 
    b  0 0.210522 
      1 1.431279 
      2 -0.247171 
      3 0.899074 
      4 0.639926 

結果:

 
      0 
Caps   
A  1.131616 
B  2.010710 

這是我創建的DataFrame,順便說一句:

df = pd.DataFrame(np.random.randn(5,4), columns = l) 
df.columns = pd.MultiIndex.from_tuples(df.columns, names=['Caps','Lower']) 
df = pd.DataFrame(df.unstack()) 
0

Simplier解決方案是max只:

#bernie's sample data 
df = df.max(level=0) 
print (df) 
      0 
Caps   
A  1.131616 
B  2.010710