在某些列条件下,哪种最简单的方法可以聚合 python 中的行(求和)?

Which is the simplest way to aggregate rows (sum) in python under certain columns conditions?

我尝试过使用聚合和分组函数但没有成功,事情是这样的df:

df:
index   var1   var2   col1   col2
1        1      10     15     23
2        1       1     34     32
2        2       1     12     32
2        1       2     14     16
2        2       2      4     16
3        1       3     65     12
3        2       3      5     12

df.function:

index   var2   col1   col2
1        10     15     23
2         1     46     32
2         2     18     16
3         3     70     12

注意,求和是由 col1 而不是 col2 完成的。

这里的技巧是使用 agg 将不同的聚合函数应用于 col1 和 col2。您可以使用以键作为列名的字典来执行此操作。我将 max 用于 col2,但可以是第一个或最后一个或其他,取决于你想要什么。

df.groupby(['index', 'var2']).agg({'col1':'sum', 'col2':'max'})

输出:

            col1  col2
index var2            
1     10      15    23
2     1       46    32
      2       18    16
3     3       70    12