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

Python实现DataFrame行列转换保留原列并新增透视列方案咨询

解决方法

你当前使用的pivot是长表转宽表的函数,和需求方向不符。你的原始数据属于列名嵌入了date(q122/q222)与指标(con/av)信息的宽表,且同一季度存在两组con/av重复列,需要先做宽转长处理,再按规则展开,具体可参考以下代码:

import pandas as pd

# 读取数据时pandas会自动给重复列加.1/.2后缀,先统一列名格式方便拆分
df.columns = df.columns.str.replace(r'(.*)\.(\d)$', r'\2_\1', regex=True)

# 宽转长提取date、分组序号、con/av值
df_long = pd.wide_to_long(
    df,
    stubnames=['con', 'av'],
    i=['stat1', 'stat2', 'id'],
    j='date',
    suffix=r'q\d{2}'
).reset_index()

# 按date分组展开两组con/av为多列,保留所有原始维度
result = df_long.pivot(
    index=['stat1', 'stat2', 'id', 'date'],
    columns='level_4',
    values=['con', 'av']
).reset_index()

# 可选:平整列名,和你期望的输出格式对齐
result.columns = [col[0] if not col[1] else col[0] for col in result.columns]

运行后即可得到保留所有原始列、按季度拆分行的目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:15:03