python - 如何使用索引字典构建 DataFrame?
问题描述
我使用数字(Y)的 DF,索引为“名称”和“日期”列,并计算 3 个不在 DF 中的其他变量(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
推荐阅读
- r - 如何使用单独的 R 中的输入创建闪亮的反应函数
- .net-core - 验证收到消息的 SHA256 签名
- java - 哪个方法将从接口或类中获得覆盖?
- sql - emp 更改商店时的前 3 名员工
- javascript - JQuery html 方法中的 HTML 代码不起作用(它显示内容但 javascript 调用不起作用)
- r - 如何编写一个for循环来计算R中数据集每列的最大值?
- mysql - 使用mysql选择随机记录
- rest - Peoplesoft 集成代理 REST 服务 POST - 如何在 Peoplesoft 中设置
- c - 如何让 C 中的标准输入从另一个程序中读取外部数据?
- android - android-sdk 工具上的标签不匹配太多,无法构建 docker 映像