Я использую DF чисел (которые обозначены Y) с индексом «Имена» и столбцами «Дата» и вычисляю регрессию PLS по 3 другим переменным (X), которых нет в DF. Я хочу извлечь бета 'o' для каждого имени в каждую дату этого DF, которые вычисляются с помощью цикла, индексируемого по датам. Проблема в том, что существует много пропущенных данных (Y), потому что не все имена присутствуют в каждой дате. Итак, я построил индексированный словарь o [i] со всеми именами, существующими на определенные даты, и т. Д. .. мой вопрос: Как построить DF с бета-версиями с датами и именами в виде столбцов и индекса?

import pandas as pd
import numpy as np

Результаты PLS могут быть организованы как ниже:

o={}
o[0]={'Date' : '1995-12-12', 'Names' : ['Jack','Jeff','Paul'] ,'Beta' : [0.254,0.12,0.35]}
o[1]={'Date' : '1995-12-13', 'Names' : ['Jack','Jeff','Paul'], 'Beta' : [0.21,0.11,0.31]}
o[2]={'Date' : '1995-12-14', 'Names' : ['Jack','Jeff','Paul','Olivia'], 'Beta' : [0.1,0.08,0.4,0.15]}
o[3]={'Date' : '1995-12-15', 'Names' : ['Jack','Jeff','Paul','Olivia'], 'Beta' : [0.2,0.13,0.37,0.09]}
o[4]={'Date' : '1995-12-16', 'Names' : ['Jeff','Paul','Olivia','Stef'], 'Beta' : [0.15,0.29,0.33,-0.01]}
1
mel 8 Дек 2018 в 22:24

1 ответ

Лучший ответ

Вы можете попробовать сделать это следующим образом:

# Create the dataframe
df = pd.concat(list(map(pd.DataFrame, o.values())))

# Reindex by Date and Names
df = df.set_index(['Date', 'Names'])

В результате чего

                    Beta
Date       Names        
1995-12-12 Jack    0.254
           Jeff    0.120
           Paul    0.350
1995-12-13 Jack    0.210
           Jeff    0.110
           Paul    0.310
1995-12-14 Jack    0.100
           Jeff    0.080
           Paul    0.400
           Olivia  0.150
1995-12-15 Jack    0.200
           Jeff    0.130
           Paul    0.370
           Olivia  0.090
1995-12-16 Jeff    0.150
           Paul    0.290
           Olivia  0.330
           Stef   -0.010
0
ayorgo 8 Дек 2018 в 19:52