我对编程很陌生,在这件事上我很挣扎。如有任何帮助,我们将不胜感激!
我有一个股票数据框,包括价格和上涨 (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 矢量化操作中做到这一点! 请帮助我!
用途:
s = df['sign'].ne(df['sign'].shift()).cumsum()
df['count'] = df.groupby(s).cumcount() % 5 + 1
print (df)
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