在优矿上的-量化分析师的Python日记中看到一个函数很不错--pd.crosstab 。因为我们平时取到的多股数据可能如以下所示;
取两股为例: Sec1, Sec2
利用pandas的date_range获得一列时间序列,当然这边价格是简单假设的。
最终得到的df 数据框为 (第一列为自动获取的index)
SecName date price
0 sec1 2016-08-26 0
1 sec1 2016-08-27 1
2 sec1 2016-08-28 2
3 sec1 2016-08-29 3
4 sec1 2016-08-30 4
5 sec1 2016-08-31 5
6 sec1 2016-09-01 6
7 sec1 2016-09-02 7
8 sec1 2016-09-03 8
9 sec1 2016-09-04 9
0 sec2 2016-08-26 10
1 sec2 2016-08-27 11
2 sec2 2016-08-28 12
3 sec2 2016-08-29 13
4 sec2 2016-08-30 14
5 sec2 2016-08-31 15
6 sec2 2016-09-01 16
7 sec2 2016-09-02 17
8 sec2 2016-09-03 18
9 sec2 2016-09-04 19
接下来就是pd.crosstab登场的时间了
SecName sec1 sec2
date
2016-08-26 1 1
2016-08-27 1 1
2016-08-28 1 1
2016-08-29 1 1
2016-08-30 1 1
2016-08-31 1 1
2016-09-01 1 1
2016-09-02 1 1
2016-09-03 1 1
2016-09-04 1 1
哎嘛不对,这样就成为了excel数据透视表中的count了,所以得到的值都是1,因为每组(date,SecName)对应的值是唯一的
所以应该指定一下第三,四个参数 values,aggfun=sum,这里表示将对应的值求和,因为每个值都是唯一的,结果就是我们想要的了。
SecName sec1 sec2date
2016-08-26 0 10
2016-08-27 1 11
2016-08-28 2 12
2016-08-29 3 13
2016-08-30 4 14
2016-08-31 5 15
2016-09-01 6 16
2016-09-02 7 17
2016-09-03 8 18
2016-09-04 9 19