考虑列的唯一值时,pandas groupby中的平均聚合

时间:2020-08-27 08:13:10

标签: python pandas pandas-groupby

我有以下数据框:

df:
S0  S1  V1  V2  V3  V4
A   B   1   9   1   4
A   B   2   8   1   4
A   B   3   7   1   4
A   B   4   6   1   4
A   B   5   5   1   4
A   B   6   4   1   4
A   C   7   3   2   3
A   C   8   2   2   3
A   C   9   1   2   3
A   C   9   0   2   3

我在这里进行分组,以汇总值并获得下表:

df:
S0  S1  V1  V2  V3  V4
A   B   21  39   1   4
A   C   33   6   2   3

第V1列和第V2列按和求和,而第S3列的唯一值则对V3列和V4列取平均值。

如果直接使用Groupby聚合,则不会将S1列视为唯一值。前进的方向是什么?

1 个答案:

答案 0 :(得分:7)

我相信您需要按S0S1进行汇总分组:

df1 = (df.groupby(['S0','S1'], as_index=False)
         .agg({'V1':'sum','V2':'sum','V3':'mean','V4':'mean'}))
print (df1)
  S0 S1  V1  V2  V3  V4
0  A  B  21  39   1   4
1  A  C  33   6   2   3