python的双层聚合

python的双层聚合,python,pandas,group-by,Python,Pandas,Group By,我在使用groupby时遇到一些问题。我需要按一个字段进行聚合,但另一个字段必须是每个组的所有值的最大值。然后我需要这个最新聚合的总和 假设我有这张桌子: field 1 field 2 value 1 1 0 1 2 1 1 3 1 2 1 1 2 1 1 2 4 0 我想知道每个字段2的字段1计数不同,但每个字段1的valu

我在使用
groupby
时遇到一些问题。我需要按一个字段进行聚合,但另一个字段必须是每个组的所有值的最大值。然后我需要这个最新聚合的总和

假设我有这张桌子:

field 1 field 2 value
   1       1      0
   1       2      1
   1       3      1
   2       1      1
   2       1      1
   2       4      0
我想知道每个字段2的字段1计数不同,但每个字段1的
value=1
数量也不同(但每个字段2只计数一次)

我让它工作的方法是聚合两次:

df = df.groupby([field1, field2]).aggregate({'value':'max'})
df = df.groupby(field2).aggregate({field1: 'count', 'value': 'sum'})

但这需要很长时间。我肯定有一个lambda函数我可以使用,但我是新来的,我不能弄明白它。谁能帮帮我吗?

你说的“花了很长时间”是什么意思?嗨,保罗,谢谢你的回答。这花了22秒(这是一张700万美元的桌子)。但只进行1级聚合只需不到2秒,具体一点。如果你的意思是你对700万行的第一次groupby操作花了22秒,但是对较小的结果集的第二次操作只花了2秒,我会非常高兴的。
df = df.groupby([field1, field2]).aggregate({'value':'max'})
df = df.groupby(field2).aggregate({field1: 'count', 'value': 'sum'})