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

如何用Python将Excel指定列唯一值转为新列并从其他列赋值?

Excel表格格式转换的Python实现方案

核心思路

针对格式转换需求,我们可以通过pandas的melt结合merge(处理映射关系)来实现,替代单纯的aggregate或melt操作。

步骤示例

假设当前格式的Excel数据读入后得到DataFrame df,映射关系存储在mapping_df中:

1. 读取数据

import pandas as pd

# 读取原始表格
df = pd.read_excel("原始表格.xlsx")
# 读取映射条件表
mapping_df = pd.read_excel("映射条件表.xlsx")

2. 重塑数据(宽表转长表)

使用melt将多列指标转为长格式,保留关键标识列:

# 假设原始表中标识列为"ID"、"名称",其余为需要转换的指标列
melted_df = df.melt(
    id_vars=["ID", "名称"],
    var_name="原始指标名",
    value_name="指标值"
)

3. 匹配映射关系

通过merge将原始指标名替换为预期格式的指标名,处理无对应值的场景:

# 假设映射表包含"原始指标名"和"预期指标名"两列
result_df = melted_df.merge(
    mapping_df,
    on="原始指标名",
    how="left"  # 保留所有原始数据,无映射的显示NaN
)

4. 调整最终格式

根据预期格式重新整理列顺序,过滤空值(如果需要):

# 选择并排序需要的列
final_df = result_df[["ID", "名称", "预期指标名", "指标值"]].rename(
    columns={"预期指标名": "指标名称"}
)
# 可选:删除无对应指标名称的行
final_df = final_df.dropna(subset=["指标名称"])

5. 导出结果

final_df.to_excel("转换后表格.xlsx", index=False)

关键说明

  • 如果原始表格的结构更复杂(如多级表头),需要先处理表头后再执行melt
  • 映射表需确保原始指标名与原始表格的列名完全匹配,避免匹配失败
  • how="left"参数保证即使没有对应映射值的行也会被保留,无需担心场景遗漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:25:18