You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas实现指定结构的DataFrame透视转换?

Pandas透视后去除多层列结构实现目标宽格式

步骤1:预处理数据(若需衍生字段)

如果目标结构里的value是通过credit和debit计算得到的(比如value = credit - debit),先在原始DataFrame中新增该字段:

import pandas as pd

# 假设原始DataFrame名为df
df['value'] = df['credit'] - df['debit']

步骤2:执行透视聚合

使用pivot_table完成透视,指定行索引、列字段、需要聚合的数值字段和聚合方式:

# 根据你的实际行索引字段替换'account',比如科目编码、客户ID等
pivoted_df = df.pivot_table(
    index='account',
    columns='period',
    values=['value', 'transaction', 'balance'],
    aggfunc='sum'  # 聚合方式按需调整,比如'mean'、'count'等
)

步骤3:合并多层列索引

透视后出现的多层列(上层是字段名、下层是季度Q1/Q2等),通过map和join合并成单一列名:

# 用下划线连接两层列名,生成如'value_Q1'、'transaction_Q2'的格式
pivoted_df.columns = pivoted_df.columns.map('_'.join)

步骤4:重置索引(可选)

如果需要把行索引(比如account)转为普通列,执行重置索引:

pivoted_df = pivoted_df.reset_index()

示例效果

原始数据示例:

accountperioddebitcredittransactionbalance
A1Q110020051500
A1Q215030031650
A2Q1501002800

处理后得到的目标宽格式:

accountvalue_Q1value_Q2transaction_Q1transaction_Q2balance_Q1balance_Q2
A11001505315001650
A250NaN2NaN800NaN

内容的提问来源于stack exchange,提问作者hhk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:00:59