繁体   English   中英

熊猫数据框字典列表

[英]List of Dictionaries to Pandas Dataframe

我有一个字典列表,我想将其转换为数据框。 这是我在做什么:

comments = getComments(submission) #returns list of dicts
tree = flattenTree(comments) #this just removes indentation from one of the text fields
df = pd.DataFrame(tree)['data']

df.head()返回:

0    {u'subreddit_id': u't5_2qj9g', u'banned_by': N...
1    {u'subreddit_id': u't5_2qj9g', u'banned_by': N...
2    {u'subreddit_id': u't5_2qj9g', u'banned_by': N...
3    {u'subreddit_id': u't5_2qj9g', u'banned_by': N...
4    {u'subreddit_id': u't5_2qj9g', u'banned_by': N...
Name: data, dtype: object

原始数据是嵌套字典的列表:

[{u'data': {u'approved_by': None,
u'archived': False,
u'author': u'des-tal',
u'controversiality': 0,
...
u'user_reports': []},
u'kind': u't1'},
{u'data': {u'approved_by': None,
u'archived': False,
...

我正在寻找的格式是:

在此处输入图片说明

我可以这样从数据框中选择行来获得:

...
df = pd.DataFrame(tree)['data']
inddf = pd.DataFrame([df[0],df[1],df[3]])
print inddf

如何在不手动选择所有行的情况下从数据集中为所有行形成数据框? 我试图遍历索引,但是我确信有更好的方法。

谢谢

您可以将字典列表传递给pandas数据框。 例如看下面

my_list = [

{u'data': {u'approved_by': None,
u'archived': False,
u'author': u'des-tal',
u'controversiality': 0,
u'user_reports': []},
u'kind': u't1'},

 {u'data': {u'approved_by': None,
u'archived': True,
u'author': u'des-tal',
u'controversiality': 0,
u'user_reports': []},
u'kind': u't1'}

]

import pandas as pd
df = pd.DataFrame([i['data'] for i in my_list])
print df.head()

结果是

  approved_by archived   author  controversiality user_reports
0        None    False  des-tal                 0           []
1        None     True  des-tal                 0           []

如果每个字典都具有相同的键,那么这应该适用于我认为您要尝试执行的操作。

cols = list_of_dicts[0]['data'].keys()
cols = list(cols)
df=pd.DataFrame(columns=cols)
for d in list_of_dicts:
    df.append(d['data'], ignore_index=True)

如果不是,请确保使用代表性字典来初始化数据框。 有点慢,因为它处于for循环中,但应该可以解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM