如何用Python将DataFrame中的重复值转置为多列?
实现DataFrame的长格式转宽格式(透视转换)
完全可以用Python的pandas库实现这个数据转换,核心是使用pivot方法完成透视操作,步骤如下:
1. 构造原始DataFrame
先还原你提供的原始数据:
import pandas as pd data = { "Col1": ["A", "A", "A", "B", "B", "B", "C", "C", "C"], "Col2": ["Day1", "Day2", "Day3"] * 3, "Col3": [10, 9, 11, 12, 7, 5, 9, 10, 6] } df = pd.DataFrame(data)
2. 执行透视转换
使用pivot方法将长格式数据转为目标宽格式:
# 透视转换:以Col2为行,Col1为列,Col3为值 pivoted_df = df.pivot(index="Col2", columns="Col1", values="Col3").reset_index() # 调整列名格式,匹配需求 pivoted_df.columns.name = None # 移除列的层级名称 pivoted_df = pivoted_df.rename(columns={"Col2": "Date"})
转换结果
执行后得到的pivoted_df就是你需要的格式:
| Date | A | B | C |
|---|---|---|---|
| Day1 | 10 | 12 | 9 |
| Day2 | 9 | 7 | 10 |
| Day3 | 11 | 5 | 6 |
关键参数说明
index:指定作为结果行标签的列(这里是日期列Col2)columns:指定作为结果列标签的列(这里是分组列Col1的A/B/C)values:指定填充到单元格中的数据列(这里是数值列Col3)
如果你的数据存在重复的(Col2, Col1)组合,可以改用pivot_table并指定聚合函数(如aggfunc='mean')来处理重复值。
内容的提问来源于stack exchange,提问作者Elters
相关产品推荐
相关产品推荐

