【问题标题】:converting list of dictionaries with a nested dictionary to a dataframe将带有嵌套字典的字典列表转换为数据框
【发布时间】:2018-05-22 01:13:56
【问题描述】:

我对 python 编程和 pandas 库有点陌生。 我有一个如下所示的列表

[
 {
  'tradable': False, 
  'mode': 'quote', 
  'instrument_token': 256265, 
  'last_price': 10546.1,
  'ohlc': {
           'high': 10621.7, 
           'low': 10545.3, 
           'open': 10616.7, 
           'close': 10596.4
          }, 
  'change': -0.474689517194512
 }
]

我希望将键为“ohlc”的嵌套字典转换为数据框。 换句话说,数据框列应该是高、低、开、关。

请帮帮我。

【问题讨论】:

  • 您好 Edwin.. 非常感谢您的解决方案。我能够创建一个具有高开低收盘值的数据框。

标签: python-3.x dataframe


【解决方案1】:

你可以使用pandas.io.json.json_normalize():

In [16]: d
Out[16]:
[{'tradable': False,
  'mode': 'quote',
  'instrument_token': 256265,
  'last_price': 10546.1,
  'ohlc': {'high': 10621.7, 'low': 10545.3, 'open': 10616.7, 'close': 10596.4},
  'change': -0.474689517194512}]

In [17]: pd.io.json.json_normalize(d)
Out[17]:
    change  instrument_token  last_price   mode  ohlc.close  ohlc.high  ohlc.low  ohlc.open  tradable
0 -0.47469            256265     10546.1  quote     10596.4    10621.7   10545.3    10616.7     False

【讨论】:

    【解决方案2】:

    这对我有用。

    df=pd.io.json_normalize(d)
    columns=['ohlc.open','ohlc.high','ohlc.low','ohlc.low']
    df=pd.DataFrame(df,columns=columns)
    df.columns=['open','high','low','close']
    df
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-20
      • 1970-01-01
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      • 1970-01-01
      相关资源
      最近更新 更多