You need to enable JavaScript to run this app. 如何将自定义嵌套字典转换为交叉表样式的pandas DataFrame
优惠活动
大模型
产品
解决方案
定价
更多

如何将自定义嵌套字典转换为交叉表样式的pandas DataFrame

实现方案

核心逻辑

你构建的context字典本身已经存好了所有需要的结构化信息,不需要重复计算原始布尔表,直接基于现有字典数据转换即可:

  • 行索引:取context['self']下的所有键值(即所有定义的对象:ac、anz、ana、aa等)
  • 列名:取context['attrs']下的所有属性缩写
  • 单元格值:对每一个对象,遍历所有属性,判断该属性是否存在于对象对应的属性集合中,生成布尔值

可直接运行的代码

import pandas as pd

# 从已有的context字典读取数据
obj_list = list(context['self'].keys())
attr_list = list(context['attrs'])

# 构造DataFrame的二维数据
data = []
for obj in obj_list:
    # 对每个对象,逐属性判断是否存在于其属性集合中
    row = [attr in context['self'][obj] for attr in attr_list]
    data.append(row)

# 生成最终DataFrame
df = pd.DataFrame(
    data=data,
    index=obj_list,
    columns=attr_list
)

缩写全称替换

如果需要把列名的缩写替换为对应全称,可以提前定义映射关系,直接对列名做批量替换,不影响原数据结构:

# 自定义你的缩写映射规则,按需补充即可
attr_fullname_map = {
    'LA': '拉丁美洲',
    'E': '欧洲',
    'Can': '加拿大',
    'AP': '亚太',
    'ME': '中东',
    'A': '非洲',
    'M': '墨西哥',
    'Car': '加勒比',
    'US': '美国'
}

# 批量替换列名
df.columns = df.columns.map(attr_fullname_map)

输出说明

生成的表格结构完全匹配你需要的样式:行维度为所有定义的对象,列维度为所有属性,单元格布尔值直接标记对象与属性的匹配关系,后续可直接基于该DataFrame生成带勾选标记的可视化报表。

不需要重复解析原始table参数,直接基于已构建的context结构转换,可避免冗余计算,也能保证数据和你的业务逻辑完全对齐。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.12 04:27:02