R语言按周计算平均值并为dataframe新增列的解决方案问询
解决方案
针对你的需求,最优实现方案是使用pandas的groupby()结合transform()方法,无需额外做表合并,即可将分组聚合得到的周均值直接映射到同周的所有行。
完整可运行代码如下:
import pandas as pd # 构造示例数据(你可以替换成自己的数据源读取逻辑) data = { 'day': ['Monday', 'Tuesday', 'Friday', 'Monday', 'Thursday'], 'week_number': [1, 1, 1, 2, 2], 'percent': [15.3, 10.0, 5.2, 7.0, 13.0] } df = pd.DataFrame(data) # 核心处理:按周分组计算percent平均值,保留2位小数后生成week_avg列 df['week_avg'] = df.groupby('week_number')['percent'].transform('mean').round(2) # 可选:统一percent列为两位小数,匹配预期输出格式 df['percent'] = df['percent'].round(2) # 输出验证结果 print(df)
方案优势
对比先分组聚合生成周均值中间表、再用merge合并回原表的常规方案,transform方法无需生成中间表,也不用处理关联字段匹配逻辑,代码更简洁,大数据量下执行效率更高。
内容的提问来源于stack exchange,提问作者abstract_machine
相关产品推荐
相关产品推荐

