Python 从多个分组数据中获取最大值
我在一个循环中,它给我一个groupby输出,如下所示Python 从多个分组数据中获取最大值,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我在一个循环中,它给我一个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
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次迭代中达到了峰值。
这听起来很直截了当(到目前为止一直跟踪max seen),但我不知道如何处理这个问题。
我尝试了
df.groupby(['grp1','grp2'])['mycol'].sum().to_dict()。(只是一个尝试,不知道如何保持dict更新)或者可能有一个简单的熊猫和np
解决方案,我仍然不知道 您可以再次使用groupby!:-)
连接结果()
按索引()分组
使用.max()
代码中显示:
res = pd.concat(list_of_iteration_results)
res = res.groupby(level=['grp1', 'grp2']).max()
谢谢,但是max
是如何知道它必须添加然后进行比较的?我不确定我是否理解您的后续问题:-)如果您在连接后检查res
,您应该会看到每个索引组合都可以出现很多次,例如[(A,1),(B,1),(A,1),(A,1),…]。这是我们用级别
分组的内容,然后max
从每个组中取最大值。这回答了你的问题吗,@pythonRcpp?是的,我认为level
正在做我所担心的事情。谢谢,我会接受答案,一旦我运行我的样本数据。回答得真不错。。谢谢你的帮助:)