Python:将OrderedDicts的OrderedDict解析为Pandas Dataframe

时间:2016-01-15 04:32:39

标签: python list python-3.x pandas ordereddictionary

我看来是一个包含OrderedDict的OrderdDict,它在我所指的内容中,因为它是'main'OrderedDict。我试图将此对象解析为Pandas DataFrame。 (我使用的是Python 3,Anaconda发行版。)

我搜索并找到了一些关于理解这些数据结构的例子,但是这些例子中的结构似乎与我的不匹配。

正如您在下面的示例中所看到的,我关心的OrderedDicts嵌套在'main'OrderedDict中名为'records'的键中。我想采取以下示例:

li = [] list1 = [(record['Id'], record['Phone'],record['FirstName'],record['LastName']) for record in od['records']] li.append(list1) li[:]

...并获取包含“Id”,“Phone”,“FirstName”,“LastName”和“Email”列的DataFrame。

到目前为止,我已经能够提取出我认为是列表的列表:

{{1}}

此列表策略列表忽略了列名称的可能性。我想请你帮忙把它变成Pandas DataFrame的最后一步。

非常感谢你。

1 个答案:

答案 0 :(得分:1)

我不熟悉Pandas DataFrame,但是构建列表字典似乎是一件合适的事情。

# Attributes of interest
attrs = ['Id', 'Phone', 'FirstName', 'LastName', 'Email']
records = od['records']

data = {}

for rec in records:
    for k in attrs:
        # setdefault initializes the array for key if necessary
        data.setdefault(k, []).append(rec[k])

dframe = pandas.DataFrame(data)

print(dframe)

不需要指定字段的解决方案。 attributes被忽略,因为没有指定如何处理它,尽管它可能像其他人一样处理。

records = od['records']
data = {}

for rec in records:
    for k, v in rec.items():
        if k == 'attributes':
            continue
        data.setdefault(k, []).append(v)

dframe = pandas.DataFrame(data)
print(dframe)