我有什麼似乎是包含OrderedDict在我所指的子集內的OrderdDict,因爲它是'main'OrderedDict。我試圖將這個對象解析爲一個Pandas DataFrame。 (我正在使用Python 3,Anaconda發行版。)Python:將OrderedDicts的OrderedDict解析爲熊貓數據框
我已經搜索並找到了一些關於這些數據結構理解的示例,但示例中的結構似乎不匹配我的。
正如你在下面的例子中看到的,我關心的OrderedDicts嵌套在'main'OrderedDict中的一個名爲'records'的鍵中。我想借下面的例子:
od = OrderedDict([('totalSize', 3), ('done', True), ('records', [OrderedDict([('attributes', OrderedDict([('type', 'Cust'), ('url', '/example/url/foo/bar/123')])), ('Id', '4563456kjgfu4uyHHY3'), ('Phone', None), ('FirstName', 'Bill'), ('LastName', 'Bob'), ('Email', '[email protected]')]), OrderedDict([('attributes', OrderedDict([('type', 'Cust'), ('url', '/example/url/foo/bar/234')])), ('Id', 'KJ23jdkd889DKJD'), ('Phone', '(444) 444-4444'), ('FirstName', 'Amanda'), ('LastName', 'Smith'), ('Email', '[email protected]')]), OrderedDict([('attributes', OrderedDict([('type', 'Cust'), ('url', '/example/url/foo/bar/654')])), ('Id', '23kkjKJkj2323KJ33'), ('Phone', '(555) 555-5555'), ('FirstName', 'Julie'), ('LastName', 'jackson'), ('Email', '[email protected]')])])])
...並獲得數據框與列「ID」,「電話」,「名字」,「姓氏」和「電子郵件」。
到目前爲止,我已經能夠提取什麼,我認爲是一個列表的列表:
li = []
list1 = [(record['Id'], record['Phone'],record['FirstName'],record['LastName'])
for record in od['records']]
li.append(list1)
li[:]
名單戰略的這份名單,但忽略列名的可能性。我想請你幫忙把這個方法變成熊貓DataFrame的最後一步。
非常感謝您提前。
謝謝!我試圖投票,但還沒有這樣的聲望。我會標記爲已解決,但解決方案需要手動聲明列Id的列表。能夠動態地提取列ID而不必指定它們是理想的。 我知道我沒有具體說明這是一個需求,所以如果沒有人提出解決方案,我會標記爲已解決。再次感謝你。 – gpanda
@gpanda我添加了一個不需要指定列名的版本 –
Brilliant,這非常有幫助,謝謝。 對於任何試圖解析simple-salesforce返回的數據的人來說,這將是一個很好的解決方案。 – gpanda