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

Pandas:基于元组字典创建分层列结构的DataFrame

解决方案

Python/Pandas 高效实现(无冗余副本)

直接从原始字典构造长格式数据,避免concat这类会生成副本的操作,再通过透视转换为目标结构:

1. 构造长格式数据

把字典的元组键和问题列表拆解为包含项目名、版本、问题的行数据:

import pandas as pd

# 示例数据
sample_data = {
    ("XBOX360", "v1.0"): ["问题1", "问题2"],
    ("XBOX360", "v2.0"): ["问题3"],
    ("PS5", "v1.0"): ["问题4", "问题5", "问题6"],
    ("PC", "v1.0"): ["问题7"],
    ("PC", "v2.0"): ["问题8", "问题9"]
}

# 直接生成行列表,无中间副本
rows = []
for (proj, ver), issues in sample_data.items():
    for issue in issues:
        rows.append({"project": proj, "target_version": ver, "issue": issue})

df_long = pd.DataFrame(rows)

2. 转换为3列目标结构

通过分组生成行号,再透视得到按项目分栏的格式:

# 为每个项目的问题生成连续行号
df_long["row_id"] = df_long.groupby("project").cumcount()

# 透视成目标结构:项目为列,行号为索引,问题为值
df_target = df_long.pivot(index="row_id", columns="project", values="issue")

# 可选:简化结构,去掉索引和列层级
df_target = df_target.reset_index(drop=True)
df_target.columns.name = None

最终df_target就是3列(XBOX360、PS5、PC)的结构,每个项目列下堆叠对应所有版本的问题,空值自动填充NaN,直接用df_target.to_excel()即可导出。这种方式全程基于原始数据构造,无多余副本,性能开销极低。


Excel 手动操作方案

不想用代码的话,可通过Excel的Power Query工具完成转换:

  1. 导入数据:把字典导出为Excel(或直接粘贴元组列名和问题列表),确保每列对应一个(project_name, target_version)元组,列内是问题内容。
  2. 拆分列名:选中所有列名,用「数据」选项卡的「文本分列」,按括号/逗号拆分出项目名,存为辅助列。
  3. 逆透视转长格式:选中所有问题列,进入Power Query编辑器,选择「转换」→「逆透视列」→「逆透视其他列」,得到包含「项目名」「版本」「问题」的长表。
  4. 透视回目标结构:添加「索引列」(从0开始),再选择「转换」→「透视列」,设置「值列」为「问题」、「列名」为「项目名」,生成3列结构后加载回Excel。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:37:09