本篇文章我将介绍如何把数据转换成我们常见的需要的格式
我们有数据格式如下:
现利用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的比较好的解释例文: