首页 > 解决方案 > 基于另一列对数据框进行分组/汇总和求和

问题描述

我有一个df从 numpy 数组创建的数据框 (),如下所示:

0.22    1
0.31    1
0.91    1
0.48    2
0.2     2
0.09    2
0.9     3
0.71    3
0.73    3
0.65    4
0.16    4
0.9     4
0.75    5
0.87    5
0.72    5
0.68    6
0.54    6
0.48    6

我想创建一个汇总数据框,将第一列中的值相对于其在第二列中的位置相加。因此,我希望从上面的示例中输出的摘要数据帧如下所示:

3.68    total
2.79    total
3.83    total

其中:摘要数据框中的第一个值将等于:0.22+0.48+0.9+0.65+0.75+0.68=3.68

摘要数据框中的第二个值将等于:0.31+0.2+0.71+0.16+0.87+0.54=2.79

摘要数据框中的第三个值将等于: 0.91+0.09+0.73+0.9+0.72+0.48=3.83

标签: pythonpandas

解决方案


您可以进行两次 groupby,一次用于标记每个组内的相对位置,一次用于求和:

df[0].groupby(df.groupby(df[1]).cumcount()).sum()

输出:

0    3.68
1    2.79
2    3.83
Name: 0, dtype: float64

选项 2:如果所有组的元素数量相等,我们可以重塑:

df[0].values.reshape(df[1].max(),-1).sum(0)
# out
# array([3.68, 2.79, 3.83])

推荐阅读