我在一个循环中,它给我一个groupby输出,如下所示
df.groupby(['grp1','grp2'])['mycol'].sum()
基本上我得到了我的分组元素的总和。
grp1 grp2
A 1 10
B 1 20
C 2 30
D 3 40
E 4 50
1 60
现在在下一次迭代中,我可能会得到一个如下所示的分组df
grp1 grp2
A 1 20
D 3 40
E 4 30
1 90
F 1 40
我想从每次迭代中取max
。
所以在第二次迭代之后,我有一个像
grp1 grp2
A 1 20 #because 20 was higher than 10
B 1 20 #carried as it is
C 2 30 #carried as it is
D 3 40 #carried as it is (both were equal)
E 4 30 #because 90+30 >50+60
1 90
F 1 40 #added
所以最后我说在5次迭代期间哪个组达到了峰值。
这听起来很直接(跟踪到目前为止看到的最大值),但我没有得到如何处理这个问题。
我尝试做df.groupby(['grp1','grp2'])['mycol'].sum().to_dict()
并做一些事情,比如在读取新的df时更新dict。 (只是一个尝试,不知道如何更新dict)或者可能有一个简单的pandas and np
解决方案我还不知道。
答案 0 :(得分:3)
你可以再次使用groupby! : - )
level
param),.max()
代码中显示:
res = pd.concat(list_of_iteration_results)
res = res.groupby(level=['grp1', 'grp2']).max()