向量化回测系列3——数据的重构与转换pivot stack unstack

本篇文章我将介绍如何把数据转换成我们常见的需要的格式

我们有数据格式如下:

现利用pivot将其转换成我们需要的 windbyfeature 所有股票的对应特征的方式:

此处只取出了 S_DQ_OPEN 的数据,可以采用for循环提取所有的特征数据。 

但是有时候,我们也希望获得 windbystock 每只个股的全部特征的方式,这会稍显复杂:

第一步,设置时间和股票为多重索引:

 第二步,全部stack

 第三步,根据stock unstack(转换为列索引)

 第四步,unstack 把特征也转换为列索引

第五步,根据股票取出值!

 实际上,我们只需要一行代码就可以进行转换,本质上是行索引和列索引的转换:

df2_mid = df2.sort_index().stack(dropna=False).unstack(1).unstack()
for stock in stock_list:
    stock_info = df2_mid[stock]

注意:pivot、stack和unstack操作会占用大量内存,可能会导致内存溢出程序崩溃。

可以考虑分段处理然后拼接的方式进行(就是因为这个我花了四个小时写算法然后有花了十几个小时运行才搞完数据处理。。。无语了都 当然我那个是特征比较多的情况)

这里有几篇对pivot stack unstack的比较好的解释例文:

dataframe.pivot()

dataframe stack unstack

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值