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'})