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

将两个关联的Pandas DataFrame合并为单个嵌套JSON输出

将关联DataFrame合并为嵌套JSON的解决方案

嗨,我来帮你搞定这个需求!你需要把文档和主题这两个关联的DataFrame转换成指定的嵌套JSON格式,用Python的pandas就能轻松实现,具体步骤如下:

第一步:还原你的两个DataFrame

先把你给出的DataFrame用代码创建出来(方便后续测试验证):

import pandas as pd

# 文档DataFrame
df_doc = pd.DataFrame({
    'document_id': [1, 2],
    'name': ['aaa', 'bbb']
})

# 主题DataFrame
df_topic = pd.DataFrame({
    'topic_id': [1, 2, 3],
    'name': ['xxx', 'yyy', 'zzz'],
    'document_id': [1, 2, 2]
})

第二步:整理主题数据的嵌套结构

我们需要把每个document_id对应的所有主题,整理成一个字典列表,作为后续嵌套的topics字段:

# 按document_id分组,将每组的主题信息转为字典列表
topic_groups = df_topic.groupby('document_id').apply(
    lambda group: group[['topic_id', 'name']].to_dict('records')
).reset_index(name='topics')

这里的to_dict('records')会把每组的行数据转换成独立字典,最终每个文档对应的主题就变成了一个有序的字典列表。

第三步:合并文档与主题数据

把文档DataFrame和上面整理好的主题分组数据合并,确保每个文档都能关联到对应的主题列表:

merged_df = df_doc.merge(topic_groups, on='document_id', how='left')

用how='left'可以兼容特殊场景——即使某个文档没有对应主题,也能保留该文档的基础信息。

第四步:转换为目标嵌套JSON格式

最后把合并后的DataFrame转换成你需要的JSON格式:

# 转换为带缩进的嵌套JSON,orient='records'会生成列表形式的JSON结构
final_json = merged_df.to_json(orient='records', indent=2)
print(final_json)

最终输出结果

运行上述代码后,你会得到完全符合需求的JSON:

[
  {
    "document_id": 1,
    "name": "aaa",
    "topics": [
      {
        "topic_id": 1,
        "name": "xxx"
      }
    ]
  },
  {
    "document_id": 2,
    "name": "bbb",
    "topics": [
      {
        "topic_id": 2,
        "name": "yyy"
      },
      {
        "topic_id": 3,
        "name": "zzz"
      }
    ]
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:36:33