2013-10-20 56 views
0

比方說,我有這樣一個數據幀:在另一個層面上找到了一個等級的最大值

l1 1  2 
l2 1 13 99 89 
0 1 2 2 1 

併爲l1每個值,我想找到躋身l2值下的相應最大值即l1的值。有使用groupby的簡單方法嗎?

所以在上述例子中這將是1->22->99

我當前的解決方案是沿着線:

grouped = swapped.groupby(level="l1",axis=1) 
maxes = [] 
for n,g in grouped: 
    maxes.append((n, max([x[1] for x in g.columns]))) # we take max over level l2 

回答

1
In [33]: df = DataFrame([[1,2,2,1]], 
     columns=MultiIndex.from_tuples([(1,1),(1,13),(2,99),(2,89)],names=['l1','l2'])) 

In [34]: df 
Out[34]: 
l1 1  2  
l2 1 13 99 89 
0 1 2 2 1 

In [35]: df.T.reset_index().groupby('l1').max() 
Out[35]: 
    l2 0 
l1  
1 13 2 
2 99 2 
相關問題