【发布时间】:2019-01-26 16:17:09
【问题描述】:
我希望重新采样一些价格数据流,以便只计算每 n 行的两列的乘积。
例如,在我下面的数据中;我希望(在新列中)计算信号和 PrxDiff 的值,前提是索引是 6 的倍数(或其他整数)。
ind signal oldnal time price PrxDiff cnt
0 -1 4 2018-08-14 08:00:06 2.6575 7.525870 0
1 -1 3 2018-08-14 08:00:16 2.6575 7.525870 1
2 -2 2 2018-08-14 08:00:26 2.6585 3.761520 2
3 -1 1 2018-08-14 08:00:36 2.6585 3.761520 3
4 -4 1 2018-08-14 08:00:46 2.6585 3.761520 4
5 1 0 2018-08-14 08:00:56 2.6585 3.761520 5
6 -3 3 2018-08-14 08:01:06 2.6595 0.000000 0
7 0 2 2018-08-14 08:01:16 2.6595 0.000000 1
8 -3 3 2018-08-14 08:01:26 2.6595 0.000000 2
我尝试过的是生成一个“余数”值,然后使用 if 循环(对于每一行)来检查 cnt == 0。
dataT['cnt'] = dataT.index % 6
for row in dataT.index:
if dataT.cnt[row] == 0:
dataT.cnt[row] = dataT.PrxDiff[row] * dataT.signal[row]
else:
dataT.cnt[row] == 0
dataT
但是有两个问题,列 cnt 变成了一个整数(并且原始值似乎没有设置为零),并且计算似乎需要永远(出于某种原因)。
ind signal oldnal time price PrxDiff cnt
0 -1 4 2018-08-14 08:00:06 2.6575 7.525870 -7.0
1 -1 3 2018-08-14 08:00:16 2.6575 7.525870 1.0
2 -2 2 2018-08-14 08:00:26 2.6585 3.761520 2.0
3 -1 1 2018-08-14 08:00:36 2.6585 3.761520 3.0
4 -4 1 2018-08-14 08:00:46 2.6585 3.761520 4.0
5 1 0 2018-08-14 08:00:56 2.6585 3.761520 5.0
6 -3 3 2018-08-14 08:01:06 2.6595 0.000000 0.0
7 0 2 2018-08-14 08:01:16 2.6595 0.000000 1.0
8 -3 3 2018-08-14 08:01:26 2.6595 0.000000 2.0
9 -3 2 2018-08-14 08:01:36 2.6595 3.760105 3.0
10 -5 1 2018-08-14 08:01:46 2.6595 3.760105 4.0
11 -2 0 2018-08-14 08:01:56 2.6595 3.760105 5.0
12 -3 1 2018-08-14 08:02:06 2.6595 3.760105 -11.0
【问题讨论】:
标签: python-3.x pandas resampling