You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataFrame中按周分组计算分数列的多组平均值并新增列

问题描述

我有一个包含各类数据的DataFrame,其中核心两列为score(分数)和week(周)列:

df = pd.DataFrame({
    'score': [6, 4, 9, 8, 2],
    'week': ['21-06-2021', '21-06-2021', '21-06-2021', '28-06-2021', '28-06-2021']
})

我希望为每周的分数计算平均值并添加到新列average中。已将原精确日期列转换为周维度,理想输出如下:

score        week  average
0      6  21-06-2021     6.33
1      4  21-06-2021     6.33
2      9  21-06-2021     6.33
3      8  28-06-2021     5.00
4      2  28-06-2021     5.00
解决方案

使用Pandas的groupby结合transform方法即可实现需求,该方法会将分组计算的结果映射回原DataFrame的每一行:

基础实现

import pandas as pd

# 为原DataFrame添加average列
df['average'] = df.groupby('week')['score'].transform('mean')

保留两位小数(匹配示例格式)

如果需要像示例那样保留两位小数,可在计算后调用round方法:

df['average'] = df.groupby('week')['score'].transform('mean').round(2)

执行上述代码后,就能得到目标结果,同一周的所有行都会对应相同的分数平均值。

内容的提问来源于stack exchange,提问作者dom_2108

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 20:15:42