将两个关联的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
相关产品推荐
相关产品推荐

