簡體   English   中英

如何從OrderedDicts列表中創建Pandas DataFrame?

[英]How to create a Pandas DataFrame from a list of OrderedDicts?

我有以下清單:

o_dict_list = [(OrderedDict([('StreetNamePreType', 'ROAD'), ('StreetName', 'Coffee')]), 'Ambiguous'),
           (OrderedDict([('StreetNamePreType', 'AVENUE'), ('StreetName', 'Washington')]), 'Ambiguous'),
           (OrderedDict([('StreetNamePreType', 'ROAD'), ('StreetName', 'Quartz')]), 'Ambiguous')]

就像標題所說的那樣,我試圖獲取此列表並創建一個熊貓數據'StreetNamePreType' ,其中'StreetName''StreetNamePreType''StreetName' ,並且行包含OrderedDict中每個鍵的對應值。

我在StackOverflow上進行了一些搜索,以獲取有關如何創建數據框的一些指導,請參見此處,但是在運行此代碼時出現錯誤(我試圖復制該響應中發生的事情)。

from collections import Counter, OrderedDict
import pandas as pd

col = Counter()
for k in o_dict_list:
    col.update(k)

df = pd.DataFrame([k.values() for k in o_dict_list], columns = col.keys())

當我運行此代碼時,我得到的錯誤是: TypeError: unhashable type: 'OrderedDict'

在這里查找了這個錯誤,發現數據類型存在問題,但不幸的是,我對Python / Pandas的內部工作方法了解不足,無法獨自解決此問題。

我懷疑我的OrderedDict列表與此處的列表不完全相同,這就是為什么我的代碼無法正常工作的原因。 更具體地說,我相信我有一組集合,每個元素都包含一個OrderedDict。 這個例子,我已經鏈接到這里似乎是OrderedDicts的真實名單。

再說一次,我對Python / Pandas的內部運作方法還不了解,無法獨自解決這個問題,並且正在尋求幫助。

我將使用列表理解來做到這一點,如下所示。

pd.DataFrame([o_dict_list[i][0] for i, j in enumerate(o_dict_list)])

請參見下面的輸出。

 StreetNamePreType  StreetName
0   ROAD            Coffee
1   AVENUE          Washington
2   ROAD            Quartz

從列表中提取OrderedDict對象,然后使用pd.Dataframe應該可以工作

values= []
for i in range(len(o_dict_list)):
    values.append(o_dict_list[i][0])

pd.DataFrame(values)


    StreetNamePreType   StreetName
0   ROAD    Coffee
1   AVENUE  Washington
2   ROAD    Quartz
d = [{'points': 50, 'time': '5:00', 'year': 2010}, 
{'points': 25, 'time': '6:00', 'month': "february"}, 
{'points':90, 'time': '9:00', 'month': 'january'}, 
{'points_h1':20, 'month': 'june'}]

pd.DataFrame(d)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM