擅长:python、mysql、java
<p>通过使用<code>row.name</code>[1]在<code>df.apply</code>调用中获取行的索引,可以生成与当前所在行相关的“forecast”数据。这实际上是一个将“forecast”放到相关行的预处理步骤,或者如果df在下游可用,它可以作为初始<code>df.apply</code>调用的一部分来完成。</p>
<pre><code>df = pd.DataFrame([100, 200, 300, 400, 500, 600, 700, 800, 900, 1000], columns=['PRICE'])
horizon = 3
df['FORECAST'] = df.apply(lambda x: [df['PRICE'][x.name+1:x.name+horizon+1]], axis=1)
</code></pre>
<p>结果如下:</p>
<pre><code> PRICE FORECAST
0 100 [200, 300, 400]
1 200 [300, 400, 500]
2 300 [400, 500, 600]
3 400 [500, 600, 700]
4 500 [600, 700, 800]
5 600 [700, 800, 900]
6 700 [800, 900, 1000]
7 800 [900, 1000]
8 900 [1000]
9 1000 []
</code></pre>
<p>它可以在您的行级计算中使用。</p>
<p><strong>编辑:</strong>
如果要从结果“Forecast”中删除索引:</p>
<pre><code>df['FORECAST'] = df.apply(lambda x: [df['PRICE'][x.name+1:x.name+horizon+1].reset_index(drop=True)], axis=1)
</code></pre>
<p>[1]<a href="https://stackoverflow.com/questions/26658240/getting-the-index-of-a-row-in-a-pandas-apply-function">getting the index of a row in a pandas apply function</a></p>