在Pandas/Python中处理时间序列

2024-05-29 10:39:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据:

            AdjClose     Chg     RM    Target
date                                       
2014-01-16  41.733862  0.002045   0     NaN
2014-01-17  41.695141 -0.000928   1     NaN
2014-01-21  42.144309  0.010773   1     NaN
2014-01-22  41.803561 -0.008085   1     NaN
2014-01-23  41.640931 -0.003890   0     3.0
2014-01-24  41.586721 -0.001302   0     3.0
2014-01-27  41.323416 -0.006331   0     2.0
2014-01-28  41.710630  0.009370   1     2.0
2014-01-29  41.780328  0.001671   0     1.0
2014-01-30  42.701896  0.022057   0     1.0

我相信有一个简单的方法可以做到这一点,但我还没有弄清楚。对于每一天,我需要看看有多少次在过去的n天,有一个向上/向下或向下/向上的运动。你知道吗

我丑陋的解决方案是为5天的目标做以下事情:

dd['RM']=0
dd['RM'][((dd['Chg']>0) & (dd['Chg'].shift(1)<0))|
         ((dd['Chg']<0) & (dd['Chg'].shift(1)>0))] = 1
dd['Target']=pd.rolling_sum(dd['RM'],window=5)

然后在前n天做一个滚动加总。你知道吗

我希望有人能给我一个更优雅的解决方案。非常感谢。你知道吗


Tags: 数据方法rmtarget目标dateshiftnan

热门问题