在另一个级别上查找层次结构级别的最大值

时间:2013-10-20 07:10:24

标签: pandas

假设我有一个像这样的DataFrame:

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 个答案:

答案 0 :(得分: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