我正在尝试进行一个API调用。对于这个特定的API,JSON文件中的一个键需要有一个嵌套的字典。
以下是 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
最终结果需要如下所示,并且在嵌套字典之外有一个键“Account_Name__r”:
[{'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'}}]
数据来自一个 Dataframe 。我可以得到一个正常的 Dataframe 来正确地导出,但是嵌套有问题。下面是当我把正常的 Dataframe 作为一个正常的json时的样子:
代码:
final.to_json(orient='records')
输出:
[{'ID': '1234567',
'Date': '2022-12-21',
'Total_Transactions': 1,
'Amount': 235.00,
'Account_Name__c':'a1234567'},
{'ID': '2345678',
'Date': '2022-13-21',
'Total_Transactions': 2,
'Amount': 300.50,
'Account_Name__c':'a2345678'}]
你知道我需要如何构建 Dataframe 吗?我需要使用什么转换/函数来获得顶部的嵌套结构?我希望通过在panda中执行矢量化操作和df.to在panda中使用www.example.com _json()方法来实现这一点。
我不是在寻找for循环解决方案,这很简单,但实际上并不能帮助我学习如何从Pandas Dataframe 创建不同类型的复杂JSON结构,而且在我的情况下,对于我将使用的大型数据集来说,它是不可伸缩的。
3条答案
按热度按时间mutmk8jj1#
试试看:
图纸:
mrwjdhj32#
试试这个:
z31licg03#
我把这个问题分解成一个更小的问题来解决,我把这个问题贴在这里:Is there a way to store a dictionary on each row of a dataframe column using a vectorized operation?
用户Panda Kim因解决了初始问题而获得奖励:https://stackoverflow.com/users/20430449/panda-kim
这是使用Pandas金使用的答案以及我拼凑起来的最后一步所需的解决方案。
首先,我们在 Package 的字典之外为一个新列命名,该列的名称是稍后将使用的键,我们将通过使用. T方法转置列名"Account_Name__c"及其对应值,并使用to_dict()将其设置为字典来获取该列的值
结果是:
最后,我们使用. to_dict()或. to_json()将整个 Dataframe 转换为字典或json
结果是: