如何在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
相关产品推荐
相关产品推荐

