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

使用Python实现DataFrame特定条件转置并转换为目标格式求助

解决方法

你当前的代码已经完成了一半的转换逻辑,问题出在直接删除了字段名里的数字编号,丢失了1/2对应的期数维度,补充拆分字段、透视两步即可得到目标格式,修改后的完整代码如下:

import pandas as pd
import numpy as np
import openpyxl

# 读取Excel数据
df = pd.read_excel('Test3.xlsx')

# 保留需要的列,无需手动转列表重构DataFrame
lista = df[['Cliente', 'ID', 'Costo1', 'Margen1', 'Ganancia1', 'Costo2', 'Margen2', 'Ganancia2']].copy()

# 宽表转长表
new_df = lista.melt(id_vars=['Cliente','ID'], var_name='variable', value_name='value')

# 拆分字段名为【指标名】+【期数】,比如Costo1拆为 指标=Costo,期数=1
new_df[['指标', '期数']] = new_df['variable'].str.extract(r'^([^\d]+)(\d+)$')

# 透视转换得到最终目标格式
final_df = new_df.pivot(
    index=['Cliente', 'ID', '期数'],
    columns='指标',
    values='value'
).reset_index().rename_axis(columns=None) # 清除透视生成的多余索引名

# 可直接导出为Excel文件
final_df.to_excel('转换结果.xlsx', index=False)
print(final_df)

如果后续新增Costo3/Margen3/Ganancia3这类第三期、第四期的字段,上述代码无需修改也能自动适配转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:15:05