It's my first time asking a question here, so I hope I will do it right !
I have a Pandas Dataframe:
df2.data
Out[66]:
date
2016-01-02 0.0
2016-01-03 1.0
2016-01-04 1.0
2016-01-05 1.0
2016-01-06 0.0
2016-01-07 0.0
2016-01-08 1.0
2016-01-09 2.0
2016-01-10 1.0
2016-01-11 0.0
Name: data, dtype: float64
I would like the following results :
data trend trend_type
date
2016-01-02 0.0 0 0
2016-01-03 1.0 0 0
2016-01-04 1.0 1 1
2016-01-05 1.0 2 1
2016-01-06 0.0 0 0
2016-01-07 0.0 1 0
2016-01-08 1.0 0 0
2016-01-09 2.0 0 0
2016-01-10 1.0 0 0
2016-01-11 0.0 0 0
My probleme is a bit related with How to use pandas to find consecutive same data in time series.
So far, I managed to get the trend, but it is not efficient enough (about 8 sec for a 750 rows dataframe)
df['grp'] = (df.close.diff(1) == 0).astype('int')
df['trend'] = 0
start_time = time.time()
for i in range(2, len(df['grp'])):
if df.grp.iloc[i] == 1:
df['trend'].iloc[i] = df['trend'].iloc[i-1] + 1