长到宽格式合并

时间:2019-09-04 13:20:52

标签: python pandas

我正在使用两个非常大的长格式数据框,其中一个包含每月(尽管日期不是索引)CRSP数据,其中一个包含季度(虽然日期不是索引)COMPUSTAT数据。我正在尝试创建许多宽格式的数据框,每个框用于将来我要使用的变量,并且尺寸都相同(由于我不希望每个月使用,所以最终会被29001列的834行占用)日期作为索引,而是每个帧的第一列,并且有28999个感兴趣的证券。

我已经按照自己的方式格式化了两个长格式的数据帧,并根据WRDS指令为每只股票创建了自己的唯一安全标识符(0-28999)。我还预先创建了一些数据框(例如,价格的PRC和交易的量的VOl)在29001之前为834,第一列的月度日期为19490729至20181231,其余各列的标记为0-28999以分别对应安全。我显然想搜索长格式的数据帧,以将所有数据推入该标准格式,但是由于第一个基于行,第二个基于列,因此很难考虑合并。

两件事不起作用:

1)我首先尝试简单地遍历所有感兴趣的变量(在这种情况下,首先遍历CRSP数据帧),然后遍历每一列以找到每种安全性存在的日期以及基于myIdentifier的数据,并简单地推送数据,但并不是每个安全性实际上都存在或具有所有变量的数据,因此以下操作失败:

for i in range(0, len(CRSPVariablesOfInterest)):
    for j in range(0, len(uniqueTable)):
        vars()[CRSPVariablesOfInterest[i]].iloc[range(int(np.where(vars()[CRSPVariablesOfInterest[i]].Date == newCRSPMonthly.datadate[newCRSPMonthly.myIdentifier == 10000].min())[0]), int(np.where(vars()[CRSPVariablesOfInterest[i]].Date == newCRSPMonthly.datadate[newCRSPMonthly.myIdentifier == 10000].max())[0]) + 1), 10000 + 1] = newCRSPMonthly[CRSPVariablesOfInterest[i]][newCRSPMonthly.myIdentifier == 10000]

2)然后,我尝试了一些更简单的方法,只是尝试从长格式转换为宽格式,但是收到了“索引包含重复条目,无法重塑”的错误消息。

test = newCRSPMonthly.pivot(index = "datadate", columns = "myIdentifier", values = "PRC")

希望一切都有意义,对不起,这是我第一次问问题。我希望您能提供任何帮助!

0 个答案:

没有答案