我有以下列表:
o_dict_list = [(OrderedDict([('StreetNamePreType', 'ROAD'), ('StreetName', 'Coffee')]), 'Ambiguous'),
(OrderedDict([('StreetNamePreType', 'AVENUE'), ('StreetName', 'Washington')]), 'Ambiguous'),
(OrderedDict([('StreetNamePreType', 'ROAD'), ('StreetName', 'Quartz')]), 'Ambiguous')]
就像标题所说的那样,我试图获取此列表并创建一个熊猫数据框,其中的列为:'StreetNamePreType'
和'StreetName'
,并且行包含OrderedDict中每个键的对应值
我已经在StackOverflow上进行了一些搜索,以获取有关如何创建数据框的指导,请参见here,但是运行此代码时出现错误(我正在尝试复制其中的内容响应)。
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'
我检查了这个错误,here,我发现数据类型存在问题,但是不幸的是,我对Python / Pandas的内部工作方法并不了解,无法解决此问题。我自己的。
我怀疑我的OrderedDict列表与here中的列表不完全相同,这就是为什么我的代码无法正常工作的原因。更具体地说,我相信我有一组集合,每个元素都包含一个OrderedDict。我链接到here的示例似乎是OrderedDicts的真实列表。
再次,我对Python / Pandas的内部运作方法了解不足,无法独自解决此问题,并且正在寻求帮助。
答案 0 :(得分:2)
我将使用列表理解来做到这一点。
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
答案 1 :(得分:1)
从列表中提取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
答案 2 :(得分:0)
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)