2017-10-08 24 views
1

referencePythonの:リスト内の辞書からデータフレームの列を作成する方法を

私はこの形式での出力を持つdictの持っている:私は簡単にそれは次のようになりますDATAFRAMEを作成することができます

response['candles'][0:2] 

[{'complete': True, 
    'mid': {'c': '0.91535', 'h': '0.91535', 'l': '0.91535', 'o': '0.91535'}, 
    'time': '2002-05-06T21:00:00.000000000Z', 
    'volume': 1}, 
{'complete': True, 
    'mid': {'c': '0.90435', 'h': '0.90435', 'l': '0.90435', 'o': '0.90435'}, 
    'time': '2002-05-07T21:00:00.000000000Z', 
    'volume': 1}] 

を:

res = pd.DataFrame(response['candles']) 

complete mid time volume 
0 True {'o': '0.91535', 'h': '0.91535', 'l': '0.91535... 2002-05-06T21:00:00.000000000Z 1 
1 True {'o': '0.90435', 'h': '0.90435', 'l': '0.90435... 2002-05-07T21:00:00.000000000Z 1 

私はこのような '中期' dictの項目にアクセスすることができます

response['candles'][0]['mid']['c'] 

'0.91535' 
0123を

しかし、DataFrameの内部にdictを置くのではなく、各 'mid'アイテムのDataFrameに列を追加するにはどうすればよいですか? ['mid'] ['o']、['mid'] ['h']などの列が必要です。

答えて

1

使用pandas.io.json.json_normalizeありがとう:

d = [{'complete': True, 
    'mid': {'c': '0.91535', 'h': '0.91535', 'l': '0.91535', 'o': '0.91535'}, 
    'time': '2002-05-06T21:00:00.000000000Z', 
    'volume': 1}, 
{'complete': True, 
    'mid': {'c': '0.90435', 'h': '0.90435', 'l': '0.90435', 'o': '0.90435'}, 
    'time': '2002-05-07T21:00:00.000000000Z', 
    'volume': 1}] 

pd.io.json.json_normalize(d) 
#complete  mid.c mid.h mid.l mid.o       time volume 
#0 True 0.91535 0.91535 0.91535 0.91535 2002-05-06T21:00:00.000000000Z 1 
#1 True 0.90435 0.90435 0.90435 0.90435 2002-05-07T21:00:00.000000000Z 1 
+0

でし一度使うと '' '適用されます(pd.Series)' ''? –

+0

@LiamHealyはい。それも同様に動作します。 – Psidom

+0

素晴らしいです、ありがとうございます!それはJSON形式であることを認識していない... – cadig

関連する問題