0

假设我有一个这样的 DataFrame:

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

对于 的每个值,我想在该值下l1的值中找到相应的最大值。有没有一种简单的方法可以使用 groupby 来做到这一点?l2l1

所以在上面的例子中它会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 
4

1 回答 1

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
于 2013-10-20T21:55:25.990 回答