如何在Pandas中对含重复值的数据透视并按日期聚合
解决方法
首先将字符串类型的Values_data转换为数值类型,确保后续聚合运算正常:
df['Values_data'] = df['Values_data'].astype(int)
使用pivot_table替代pivot实现透视,它支持通过聚合函数处理重复的索引-列组合,避免报错:
# 以sum为聚合函数,可根据需求替换为mean、count、max等 pivot_df = df.pivot_table( index='Dates', columns='Category_data', values='Values_data', aggfunc='sum' ) # 可选:重置索引,让Date作为普通列,同时移除列轴的名称 pivot_df = pivot_df.reset_index().rename_axis(None, axis=1)
执行后得到的结果格式如下:
| Dates | A | B | C |
|---|---|---|---|
| 2017-11-08 | 1 | 6 | 6 |
| 2017-11-09 | 3 | 1 | 1 |
| 2017-11-10 | 4 | 1 | 1 |
| 2017-11-13 | 6 | 5 | 6 |
| 2017-11-14 | 1 | 3 | 1 |
| 2017-11-15 | 1 | 1 | 1 |
核心说明
pivot要求index与columns的组合必须唯一,否则触发重复值报错;pivot_table通过aggfunc参数对重复组合的数据进行聚合,彻底解决该问题。- 聚合函数可按需选择:统计数据条数用
count,计算平均值用mean,取最大值用max等。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

