我正在尝试创建趋势条纹,从熊猫数据库中显示1,-1,0 (赢/输/无移动)。我希望条纹在正值时增加,并在0上重置,或者在-1上重置并创建负值条纹。所需的结果如下所示:
win streak
0 0
1 1
1 2
1 3
1 4
0 0
0 0
-1 -1
-1 -2
1 1
目前,我有一个创建win列的代码。
dataframe.loc[dataframe['close'] > dataframe['close_1h'].shift(1), 'win'] = 1
dataframe.loc[dataframe['close'] < dataframe['close_1h'].shift(1), 'win'] = -1
dataframe.loc[dataframe['close'] == dataframe['close_1h'].shift(1), 'win'] = 0
dataframe['streak'] = numpy.nan_to_num(dataframe['win'].cumsum())
但这并不能像我希望的那样正确地重置条纹。我在groupby中使用了dataframe['streak'] = dataframe.groupby([(dataframe['win'] != dataframe['win'].shift()).cumsum()])
,但这给了我一个错误,导致"ValueError: Length of values (927) not length of index (1631)“。
发布于 2021-03-13 22:55:51
试试这个:
df['streak'] = df.groupby(df['win'].diff().ne(0).cumsum())['win'].cumsum()
https://stackoverflow.com/questions/66619065
复制相似问题