如何按用户ID与周数分组计算周内访问天数的均值?
解决方案
可以通过以下步骤用Pandas实现需求:
- 构建日期与周内天数的映射关系:根据你给出的每周日期对应规则,创建字典映射每个日期对应的周内天数。
- 转换日期为周内天数:用
map函数将原始数据的日期列转换为对应的周内天数。 - 分组计算均值:按
用户ID和周数分组,对转换后的周内天数求平均值,得到mean_day。
完整代码示例
import pandas as pd # 构造原始DataFrame data = { '用户ID': [1,1,1,1,1,2,2,2], '周数': [1,1,2,2,2,1,2,2], '日期': ['23/07/22','24/07/22','29/07/22','30/07/22','01/08/22','22/07/22','29/07/22','02/08/22'] } df = pd.DataFrame(data) # 定义日期到周内天数的映射 week_day_map = { '22/07/22': 1, '23/07/22': 2, '24/07/22': 3, '29/07/22': 1, '30/07/22': 2, '01/08/22': 3, '02/08/22': 4 } # 添加周内天数列 df['day_of_week'] = df['日期'].map(week_day_map) # 分组计算均值 result = df.groupby(['用户ID', '周数'])['day_of_week'].mean().reset_index(name='mean_day') print(result)
运行结果
用户ID 周数 mean_day 0 1 1 2.5 1 1 2 2.0 2 2 1 1.0 3 2 2 2.5
该结果与你期望的输出完全一致。若实际数据量更大,只需扩展week_day_map的映射关系即可适配。
内容的提问来源于stack exchange,提问作者kri
相关产品推荐
相关产品推荐

