2
我在一个循环中,给了我像下面 df.groupby(['grp1','grp2'])['mycol'].sum()
取最大值从多个分组数据大熊猫
基本上我让我的分组元素的总和GROUPBY输出。
grp1 grp2
A 1 10
B 1 20
C 2 30
D 3 40
E 4 50
1 60
现在下一次迭代中我可以得到一个像下面
grp1 grp2
A 1 20
D 3 40
E 4 30
1 90
F 1 40
我想从每次迭代采取max
分组DF。 所以第二迭代后我有这样
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时做了更新字典的操作。 (只是一个尝试,不知道如何保持字典更新)或者有一个简单的pandas and np
解决方案,我仍然不知道。
感谢,但是'max'知道如何添加然后比较呢? – pythonRcpp
我不确定我是否理解你的后续问题:-) 如果你在连接之后检查'res',你应该看到每个索引组合可以出现很多次,例如, [(A,1),(B,1),(A,1),(A,1),...]。这就是我们用'level'分组,然后'max'从每个组中取最大值。这是否回答你的问题,@pythonRcpp? – NTAWolf
是的,我认为'水平'是在做我关心的伎俩。谢谢,我会在我的样本数据上运行它时接受答案。非常好的答案确实..谢谢 – pythonRcpp