【发布时间】:2021-11-08 14:47:51
【问题描述】:
我有以下数据框:
| GroupID | Idx | Value |
|---|---|---|
| 0 | 1 | 2 |
| 0 | 2 | 3 |
| 0 | 3 | 4 |
| 1 | 1 | 9 |
| 1 | 2 | 4 |
| 1 | 3 | 1 |
| 2 | 1 | 7 |
| 2 | 2 | 8 |
| 2 | 3 | 2 |
| ... | ... | ... |
我想计算每个组的第n个平均值,即每个组的第一行,第二行,...的平均值,所以结果是
| GroupID | Idx | Value | Mean |
|---|---|---|---|
| 0 | 1 | 2 | 6 |
| 0 | 2 | 3 | 5 |
| 0 | 3 | 4 | 2.33 |
| 1 | 1 | 9 | 6 |
| 1 | 2 | 4 | 5 |
| 1 | 3 | 1 | 2.33 |
| 2 | 1 | 7 | 6 |
| 2 | 2 | 8 | 5 |
| 2 | 3 | 2 | 2.33 |
| ... | ... | ... |
我试过了
def calc_nth_mean(df, grouper, col, n):
return df.groupby(grouper)[col].nth(n).mean()
avg = []
for i in range(0, 90):
avg.append(calc_nth_mean(data, "Group", "Value", i))
效果很好,但这对我来说似乎不是最有效的解决方案。
【问题讨论】:
标签: python pandas dataframe group-by mean