假设我有一个像这样的DataFrame:
l1 1 2
l2 1 13 99 89
0 1 2 2 1
并且对于l1
的每个值,我想在l2
值下的l1
值中找到相应的最大值。使用groupby有一种简单的方法吗?
所以在上面的示例中,它将是1->2
和2->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
答案 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