我是一个新的编程和我的斗争,这件事。任何帮助是赞赏!
我有一个股票的序列,包括价格和信号,如果它将上升(1)或下降(-1).我想把重复的序列计数到另一列'计数'.所以,当有一个序列1,1,1;然后计数将是1,2,3.如果它的**-1,-1,-1**;然后计数将是1,2,3了.
此外,当阈值达到5时,计数重置。无论是1还是-1。
所以,我得到的是:
price sign
0 13 1
1 12 1
2 11 -1
3 12 -1
4 13 1
5 14 1
6 14 1
7 14 1
8 14 1
9 14 1
10 14 1
.
.
.
字符串
我想要的是:
price sign count
0 13 1 1
1 12 1 2
2 11 -1 1
3 12 -1 2
4 13 1 1
5 14 1 2
6 14 1 3
7 14 1 4
8 14 1 5
9 14 1 1
10 14 1 2
.
.
.
型
我已经用普通的python代码编写了这个代码。但是我不能在Pandas Vectorized Operation中执行这个操作!请帮助我!
2条答案
按热度按时间uyhoqukh1#
通过连续的
sign
值使用GroupBy.cumcount
,并以5
为模:字符串
详情:
型
svdrlsy42#
你可以先创建一个掩码,当符号从正变为负或相反时。2这是为了在符号改变时重置。
字符串
然后,根据符号的变化创建分组变量
型
使用group by函数进行累计计数,每当重复使用该符号时,您就添加1。
型
如果它达到5,重置为1(因此是+1),我想这是最棘手的部分,这里有一个很好的introduction到lamba函数:
型
然后符号的变化也会将计数重置为1,这是我们在开始时确定的
型
希望这有帮助