擅长:python、mysql、java
<p>你能做的就是定义一个叫做累积滞后的变量。
例如,设window size=n,lag_rate为2,则原始列的滞后为零,第一列相对于原始列的滞后为2,第二列相对于第一列的滞后为4,第n列相对于第一列的滞后为2*n</p>
<p>稍微修改代码以提高可读性:</p>
<pre><code>#set up the variables
a=np.random.rand(30)
df = pd.DataFrame()
df['original'] = a
window_size = 3
lag_by_rate = 2
</code></pre>
<p>现在,我将开始迭代window_size参数以生成新列。注意,应该从1开始for循环,而不是从零开始,因为如果从零开始,实际上就是复制dataframe的原始列</p>
^{pr2}$
<p>最后,我使用dropna函数打印头部:</p>
<pre><code>df.dropna(axis=0, inplace=True)
print(df.head())
</code></pre>
<p>我的输出示例:</p>
<pre><code> original lag_by_2 lag_by_4
0 0.595142 0.625494 0.812595
1 0.822615 0.582148 0.778157
2 0.625494 0.812595 0.693790
3 0.582148 0.778157 0.416109
4 0.812595 0.693790 0.748151
</code></pre>
<p>不管怎样,使用这种方法,您将以显著的速度丢失数据。如果len(df)/window_size==lag_rate,那么在删除N/A值之后,数据帧中的行数将为零</p>
<p>除了您下面的评论,我替换了您在示例中提到的值,得到了相同的输出:</p>
<pre><code> original lag_by_2 lag_by_4
0 5 4.0 8.0
1 6 3.0 9.0
2 4 8.0 10.0
</code></pre>