[英]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.