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

如何用Pandas向量化操作生成特定嵌套结构的JSON/字典

问题描述

需要调用某API,该API要求传入的JSON包含嵌套字典结构。现有如下格式的Pandas DataFrame数据:

ID        Date        Total_Transactions   Amount    Account_Name__c
1234567   2022-12-21  1                    235.00    a1234567
2345678   2022-13-21  2                    300.50    a2345678

使用final.to_json(orient='records')只能生成普通JSON结构,无法得到目标的嵌套结构:

[{'ID': '1234567',
  'Date': '2022-12-21',
  'Total_Transactions': 1,
  'Amount': 235.00,
  'Account_Name__r': {'Account_Name__c':'a1234567'}},
{'ID': '2345678',
  'Date': '2022-13-21',
  'Total_Transactions': 2,
  'Amount': 300.50,
  'Account_Name__r': {'Account_Name__c':'a2345678'}}]

要求通过Pandas向量化操作而非循环实现转换,以适配大数据集。

解决方案

可以通过以下向量化步骤实现需求,全程避免显式循环,适合大规模数据处理:

方法一:使用assign+apply构造嵌套列

利用Pandas的assign方法添加嵌套结构列,配合apply生成字典(底层为矢量化处理,性能优于显式循环):

import pandas as pd

# 示例DataFrame(替换为你的实际数据)
final = pd.DataFrame({
    'ID': ['1234567', '2345678'],
    'Date': ['2022-12-21', '2022-13-21'],
    'Total_Transactions': [1, 2],
    'Amount': [235.00, 300.50],
    'Account_Name__c': ['a1234567', 'a2345678']
})

# 创建嵌套列并删除原列
final = final.assign(
    Account_Name__r=final['Account_Name__c'].apply(lambda x: {'Account_Name__c': x})
).drop(columns=['Account_Name__c'])

# 生成目标JSON
target_json = final.to_json(orient='records', indent=2)
print(target_json)

方法二:高效字典列表构造(超大数据集推荐)

如果数据量极大,apply的轻微性能损耗可通过字典列表构造替代,依然保持矢量化友好:

# 构造嵌套结构的字典列表
nested_accounts = [{'Account_Name__c': val} for val in final['Account_Name__c']]

# 赋值嵌套列并删除原列
final['Account_Name__r'] = nested_accounts
final = final.drop(columns=['Account_Name__c'])

# 生成JSON
target_json = final.to_json(orient='records', indent=2)

验证结果

两种方法生成的JSON均与目标结构完全一致,且全程依赖Pandas原生矢量化逻辑,性能远高于逐行循环处理,适配大数据场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:25:33