在某些列条件下,哪种最简单的方法可以聚合 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
我尝试过使用聚合和分组函数但没有成功,事情是这样的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