我试图使用python中的simple_salesforce
包从salesforce查询信息
问题在于,它将作为父子关系一部分的字段嵌套到有序dict中的有序dict中
我想。。从Opportunity对象中查找id以及与该记录关联的accountid
SOQL查询可能看起来像
query = "select id, account.id from opportunity where closedate = last_n_days:5"
在SOQL(salesforce对象查询语言)中,点表示数据库中的父子关系。因此,我试图从opportunity对象获取id,然后从该记录上的account对象获取相关id
由于某些原因,Id很好,但account.Id嵌套在有序dict中的有序dict中:
q = sf.query_all(query)
这将收回一本有序字典
OrderedDict([('totalSize', 455),
('done', True),
('records',
[OrderedDict([('attributes',
OrderedDict([('type', 'Opportunity'),
('url',
我将拉动ordereddict
的records
部分来创建一个df
df = pd.DataFrame(q['records'])
这给了我3列,一个有序dict称为'attributes'
,Id
,另一个有序dict称为'Account'
。我正在寻找一种从嵌套有序dict'Account'
中提取('BillingCountry', 'United States')
片段的方法
[OrderedDict([('attributes',
OrderedDict([('type', 'Opportunity'),
('url',
'/services/data/v34.0/sobjects/Opportunity/0061B003451RhZgiHHF')])),
('Id', '0061B003451RhZgiHHF'),
('Account',
OrderedDict([('attributes',
OrderedDict([('type', 'Account'),
('url',
'/services/data/v34.0/sobjects/Account/001304300MviPPF3Z')])),
('BillingCountry', 'United States')]))])
编辑:澄清我在寻找什么
我想以一个dataframe结束,每个查询字段都有一列
当我使用df = pd.DataFrame(sf.query_all(query)['records'])
将'records'
片段放入数据帧时,它给出了:
attributes Id Account
OrderedDict([('type', 'Opportunity'), ('url', '/services/data/v34.0/sobjects/Opportunity/0061B003451RhZgiHHF')]) 0061B003451RhZgiHHF OrderedDict([('attributes', OrderedDict([('type', 'Account'), ('url', '/services/data/v34.0/sobjects/Account/0013000000MvkRQQAZ')])), ('BillingCountry', 'United States')])
OrderedDict([('type', 'Opportunity'), ('url', '/services/data/v34.0/sobjects/Opportunity/0061B00001Pa52QQAR')]) 0061B00001Pa52QQAR OrderedDict([('attributes', OrderedDict([('type', 'Account'), ('url', '/services/data/v34.0/sobjects/Account/0011300001vQPxqAAG')])), ('BillingCountry', 'United States')])
OrderedDict([('type', 'Opportunity'), ('url', '/services/data/v34.0/sobjects/Opportunity/0061B00001TRu5mQAD')]) 0061B00001TRu5mQAD OrderedDict([('attributes', OrderedDict([('type', 'Account'), ('url', '/services/data/v34.0/sobjects/Account/0011300001rfRTrAAE')])), ('BillingCountry', 'United States')])
删除'attributes'
列后,我希望输出是
Id BillingCountry
0061B003451RhZgiHHF 'United States'
0061B00001Pa52QQAR 'United States'
0061B00001TRu5mQAD 'United States'
Pandas是表格数据的神奇工具。但是,尽管它可以包含Python对象,但这并不是它的最佳选择。我建议您先从查询中提取数据,然后再将其插入
pandas.Dataframe
:提取记录:
将所需字段提取为字典列表非常简单,如下所示:
将记录插入数据框:
有了DICT列表,数据帧就像:
测试代码:
测试结果:
熊猫可以阅读有序的口述
相关问题 更多 >
编程相关推荐