Python 3.x 沿第n行(或整数倍)重新采样
我希望对一些价格数据流进行重新采样,以便仅为每第n行计算两列的乘积 例如,在我下面的数据中;我希望(在新列中)计算signal和PrxDiff的值,前提是索引是6的倍数(或其他整数) 我尝试的是生成一个“余数”值,然后使用一个if循环(对于每一行),检查cnt==0Python 3.x 沿第n行(或整数倍)重新采样,python-3.x,pandas,resampling,Python 3.x,Pandas,Resampling,我希望对一些价格数据流进行重新采样,以便仅为每第n行计算两列的乘积 例如,在我下面的数据中;我希望(在新列中)计算signal和PrxDiff的值,前提是索引是6的倍数(或其他整数) 我尝试的是生成一个“余数”值,然后使用一个if循环(对于每一行),检查cnt==0 dataT['cnt'] = dataT.index % 6 for row in dataT.index: if dataT.cnt[row] == 0: dataT.cnt[row] = dataT.Pr
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变成了一个整数(并且原始值似乎没有设置为零),并且计算似乎要花很长时间(出于某种原因)
逻辑的基础
np.where
np.where((df.ind%6)==0,0,df.PrxDiff*df.signal)
Out[268]:
array([ 0. , -7.52587 , -7.52304 , -3.76152 , -15.04608 ,
3.76152 , 0. , 0. , -0. , -11.280315,
-18.800525, -7.52021 , 0. ])
#df['cnt'] = np.where((df.ind%6)==0,0,df.PrxDiff*df.signal)
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
np.where((df.ind%6)==0,0,df.PrxDiff*df.signal)
Out[268]:
array([ 0. , -7.52587 , -7.52304 , -3.76152 , -15.04608 ,
3.76152 , 0. , 0. , -0. , -11.280315,
-18.800525, -7.52021 , 0. ])
#df['cnt'] = np.where((df.ind%6)==0,0,df.PrxDiff*df.signal)