如何对Pandas DataFrame进行透视转换得到指定格式输出表
pandas长表转宽表实现方法
你要实现的是典型的长格式DataFrame转宽格式操作,直接用pandas内置的pivot方法即可完成。
操作步骤
- 先构造与示例一致的原始测试数据:
import pandas as pd df = pd.DataFrame({ 'ABC': ['A', 'A', 'B', 'B'], 'Date': ['1/1/22', '1/2/22', '1/1/22', '1/2/22'], 'Data': [1, 2, 3, 4] }) - 执行透视转换:
# 核心透视逻辑 df_result = df.pivot( index='Date', columns='ABC', values='Data' ).reset_index() # 清除透视残留的索引名,和预期输出格式完全对齐 df_result.columns.name = None
运行后得到的df_result和你给出的预期结果完全匹配:
| Date | A | B |
|---|---|---|
| 1/1/22 | 1 | 3 |
| 1/2/22 | 2 | 4 |
参数说明
index='Date':指定Date列为新表的行维度,相同日期会合并到同一行columns='ABC':取ABC列的去重值作为新表的列名values='Data':取Data列的数值填充到对应行列的交叉位置reset_index():将作为行索引的Date列还原为普通数据列columns.name = None:删除透视操作自动生成的列索引层级名称,避免输出多余表头
注意:如果原始数据中存在「同一个ABC分类+同一个日期」对应多条Data记录的情况,
pivot会直接报错,此时替换为pivot_table方法即可,还可以通过aggfunc参数自定义聚合规则(求和、均值、计数等)。
内容的提问来源于stack exchange,提问作者Subhendu
相关产品推荐
相关产品推荐

