Python:如何从列表中的dict创建DataFrame列

时间:2017-10-08 20:10:32

标签: python list pandas dictionary dataframe

reference

我有一个带有这种形式的输出的词典:

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}]

我可以轻松创建一个看起来像这样的DataFrame:

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

我可以访问'mid'这样的dict项目:

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

'0.91535'

但是如何在每个'mid'项目的DataFrame中添加列,而不是在DataFrame中添加dict?我想要一个['mid'] ['o'],['mid'] ['h']的列,依此类推。

由于

1 个答案:

答案 0 :(得分: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