вложенный dict в фрейм данных - PullRequest
1 голос
/ 06 августа 2020

привет, у меня есть структура данных словаря python, как показано ниже

defaultdict(<function __main__.<lambda>()>,
            {'AMZN': [{'improv_sharpe': -4.9719673781114265e-05},
              {'stan_sharpe': 0.5995152805688786},
              {'prob_sharpe': 1.0159440451398998e-19},
              {},
              {},
              {}],
             'GOOGL': [{'improv_sharpe': 2.6114809517957284e-05},
              {'stan_sharpe': 0.16322865760123956},
              {'prob_sharpe': 6.376598832386561e-72},
              {},
              {},
              {}]})

как превратить приведенное выше в фрейм данных ниже:

                      AMZN                                     GOOGL
improv_sharpe': -4.9719673781114265e-05                   2.6114809517957284e-05

et c

1 Ответ

1 голос
/ 06 августа 2020

Это можно решить с помощью списков и dict-пониманий, как и многих похожих вопросов, но я не смог найти точного дубликата.

Если данные вашего примера:

example_data = {'AMZN': [{'improv_sharpe': -4.9719673781114265e-05},
              {'stan_sharpe': 0.5995152805688786},
              {'prob_sharpe': 1.0159440451398998e-19},
              {},
              {},
              {}],
             'GOOGL': [{'improv_sharpe': 2.6114809517957284e-05},
              {'stan_sharpe': 0.16322865760123956},
              {'prob_sharpe': 6.376598832386561e-72},
              {},
              {},
              {}]
 }

тогда :

import pandas as pd
pd.DataFrame({comp_nm :     # company name is the column name
               pd.Series({  # company data is the column vector
                  k:v for d in comp_data # since your company entries are lists of length one 
                      for k,v in d.items() if d # remove empty {}'s which will throw error
                 }) 
              # each company is a dict with name as key and list of length one as value
              for comp_nm, comp_data in example_data.items() 
})

возвращает:

                       AMZN         GOOGL
improv_sharpe -4.971967e-05  2.611481e-05
stan_sharpe    5.995153e-01  1.632287e-01
prob_sharpe    1.015944e-19  6.376599e-72

Подробнее о списках, словарях и интерпретациях можно узнать здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...