如何访问simple_salesforce返回的嵌套OrderedDict元素并导入至Pandas DataFrame?
从Simple Salesforce查询结果提取数据生成Pandas DataFrame
我使用simple_salesforce查询Salesforce后,得到如下结果:
OrderedDict([('totalSize', 1), ('done', True), ('records', [OrderedDict([('attributes', OrderedDict([('type', 'Contact'), ('url', '/services/data/v42.0/sobjects/Contact/0038')])), ('GUID', '7AFCC9D7'), ('Email', 'test@yahoo.com'), ('Contact_id', '0038')])])])我希望访问其中的type、url、GUID、Email和Contact_id这五个条目,并将它们添加至Pandas DataFrame中,请问该如何实现?
解决方案
要实现这个需求,你可以通过字典索引逐层提取所需字段,再将整理好的数据传入Pandas的DataFrame构造函数。具体代码如下:
from collections import OrderedDict import pandas as pd # 假设查询结果存储在变量result中 result = OrderedDict([('totalSize', 1), ('done', True), ('records', [OrderedDict([('attributes', OrderedDict([('type', 'Contact'), ('url', '/services/data/v42.0/sobjects/Contact/0038')])), ('GUID', '7AFCC9D7'), ('Email', 'test@yahoo.com'), ('Contact_id', '0038')])])]) # 提取单条记录中的目标字段 record = result['records'][0] extracted_data = { 'type': record['attributes']['type'], 'url': record['attributes']['url'], 'GUID': record['GUID'], 'Email': record['Email'], 'Contact_id': record['Contact_id'] } # 转换为DataFrame df = pd.DataFrame([extracted_data]) # 输出查看结果 print(df)
处理多条记录的情况
如果你的查询结果包含多条记录(totalSize大于1),可以通过循环遍历records列表批量提取数据:
data_list = [] for record in result['records']: item = { 'type': record['attributes']['type'], 'url': record['attributes']['url'], 'GUID': record['GUID'], 'Email': record['Email'], 'Contact_id': record['Contact_id'] } data_list.append(item) df = pd.DataFrame(data_list)
内容的提问来源于stack exchange,提问作者Clive Ulyate
相关产品推荐
相关产品推荐

