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

标签 python pandas

我使用带有“名称”索引和“日期”列的数字 DF(即 Y),并对不在 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]}

最佳答案

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

# 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

关于python - 如何使用索引字典构建 DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53686109/

相关文章:

python - NLTK 单词标记除带有破折号的单词外的所有单词,例如 ('hi-there' , 'me-you' )

java应用程序的python mechanize问题

python - 值错误 : could not convert string to float : bored

python - 修改前序树遍历为Python结构

python - 如何在两个一起工作的脚本完成后自动启动脚本?

python - Pandas:通过聚合整行得到结果列

python - 根据连续行值差异拆分数据框

python - 从Python中的名称列中删除前缀

pandas - 根据另一个数据框中两行值的对应值将列添加到数据框中

python - 使用 Python Bottle 重定向到带有 POST 数据的 url