2017-03-22 13 views
0

私はデータフレームに変換したい辞書のリストを持っています。ここで私がやっているものです:パンダのデータフレームへの辞書のリスト

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は()を返します:私は探しています

[{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, 
... 

形式:

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 

生データは、ネストされた辞書のリストですfor:

enter image description here

私はこのようなデータフレームから行を選択することで得ることができます

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

どのように私は手動ですべての行を選択せず​​にすべての行のための私のデータセットからの私のデータフレームを形成することができますか?私はインデックスを反復しようとしていましたが、より良い方法があると確信しています。

おかげ

答えて

1

あなたは辞書のリストをpandasデータフレームに渡すことができます。例えば

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

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() 

以下の結果を見ます
1

すべての辞書が同じキーを持っている場合、これは私はあなたがやろうとしていると思う何のために働く必要があります。

もしそうでない場合は、データフレームを初期化するために代表的な辞書を使用してください。 forループに入っているので少し遅いですが、そのトリックを行うべきです。

関連する問題