繁体   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