如何使用索引字典构建DataFrame?

时间:2018-12-08 19:24:23

标签: python pandas

我使用索引为“名称”和列为“日期”的数字(为Y)的DF,并对不在DF中的其他3个变量(X)计算PLS回归。 我想在此DF的每个日期提取每个名称的beta'o',这些日期是使用索引日期的循环计算的。 问题在于缺少很多数据(Y),因为在每个日期都没有所有名称。 因此,我建立了一个索引词典o [i],其中包含在特定日期存在的所有名称,依此类推。 我的问题是:如何用日期和名称作为列和索引的beta构建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 个答案:

答案 0 :(得分:0)

您可以尝试通过以下方式进行操作:

# 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