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

RSM*_*RSM 1 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
Run Code Online (Sandbox Code Playgroud)

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

df:
S0  S1  V1  V2  V3  V4
A   B   21  39   1   4
A   C   33   6   2   3
Run Code Online (Sandbox Code Playgroud)

列 V1 和 V2 按总和聚合,而列 V3 和 V4 根据列 S1 的唯一值取平均值。

如果直接使用 Groupby 聚合,则不会考虑列 S1 的唯一值。什么是前进的道路?

jez*_*ael 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
Run Code Online (Sandbox Code Playgroud)