<p>您可以执行以下操作:</p>
<ul>
<li>步骤1:创建一个包含90列的字典,并为其指定np.nan。
每列将有<code>Day_</code>+<code>str(i)</code>,其中i的范围从1到90</李>
<li>步骤2:使用这90列创建一个dataframe</李>
<li>步骤3:将数据帧连接到原始数据帧。现在你
将另外90列中的<code>np.NaN</code>作为值</李>
<li>步骤4:现在在<code>groupby(Symbol)</code>之后执行<code>Value</code>的移位(1)</li>
<li>步骤5:现在从2迭代到90,并执行第1天的轮班(1)。那个
将为您提供所有必需的值</李>
</ul>
<p>执行此操作的代码是:</p>
<pre><code>c = ['Symbol','Value','Day']
d = [['AACG',1.8708,1],
['AACG',1.8500,2],
['AACG',1.8869,3],
['AACG',1.8200,4],
['AACG',1.8578,5],
['ZYXI',5.25,1],
['ZYXI',4.96,2],
['ZYXI',4.99,3],
['ZYXI',4.99,4],
['ZYXI',4.95,5]]
import pandas as pd
import numpy as np
df = pd.DataFrame(d,columns=c)
cols = {'Day_'+str(i):np.NaN for i in range(1,91)}
df = pd.concat([df,pd.DataFrame(cols,index=df.index)], axis=1)
for i in range (1,91):
df['Day_'+str(i)] = df.groupby(['Symbol'])['Value'].transform(lambda x:x.shift(i))
print (df)
</code></pre>
<p>其输出将为:</p>
<pre><code> Symbol Value Day Day_1 Day_2 ... Day_86 Day_87 Day_88 Day_89 Day_90
0 AACG 1.8708 1 NaN NaN ... NaN NaN NaN NaN NaN
1 AACG 1.8500 2 1.8708 NaN ... NaN NaN NaN NaN NaN
2 AACG 1.8869 3 1.8500 1.8708 ... NaN NaN NaN NaN NaN
3 AACG 1.8200 4 1.8869 1.8500 ... NaN NaN NaN NaN NaN
4 AACG 1.8578 5 1.8200 1.8869 ... NaN NaN NaN NaN NaN
5 ZYXI 5.2500 1 NaN NaN ... NaN NaN NaN NaN NaN
6 ZYXI 4.9600 2 5.2500 NaN ... NaN NaN NaN NaN NaN
7 ZYXI 4.9900 3 4.9600 5.2500 ... NaN NaN NaN NaN NaN
8 ZYXI 4.9900 4 4.9900 4.9600 ... NaN NaN NaN NaN NaN
9 ZYXI 4.9500 5 4.9900 4.9900 ... NaN NaN NaN NaN NaN
</code></pre>
<p>我将为<code>AACG</code>创建一个包含90多行的数据框,并向您显示结果,这样您就可以看到第90天的值是正确的</p>
<p>我又添加了一些记录,向您显示90天栏已满</p>
<pre><code>>>> df.iloc[80:100]
Symbol Value Day Day_1 Day_2 ... Day_86 Day_87 Day_88 Day_89 Day_90
80 AACG 1.8659 81 1.8658 1.8657 ... NaN NaN NaN NaN NaN
81 AACG 1.8660 82 1.8659 1.8658 ... NaN NaN NaN NaN NaN
82 AACG 1.8661 83 1.8660 1.8659 ... NaN NaN NaN NaN NaN
83 AACG 1.8662 84 1.8661 1.8660 ... NaN NaN NaN NaN NaN
84 AACG 1.8663 85 1.8662 1.8661 ... NaN NaN NaN NaN NaN
85 AACG 1.8664 86 1.8663 1.8662 ... NaN NaN NaN NaN NaN
86 AACG 1.8665 87 1.8664 1.8663 ... 1.8708 NaN NaN NaN NaN
87 AACG 1.8666 88 1.8665 1.8664 ... 1.8500 1.8708 NaN NaN NaN
88 AACG 1.8667 89 1.8666 1.8665 ... 1.8869 1.8500 1.8708 NaN NaN
89 AACG 1.8668 90 1.8667 1.8666 ... 1.8200 1.8869 1.8500 1.8708 NaN
90 AACG 1.8669 91 1.8668 1.8667 ... 1.8578 1.8200 1.8869 1.8500 1.8708
91 AACG 1.8670 92 1.8669 1.8668 ... 1.8584 1.8578 1.8200 1.8869 1.8500
92 AACG 1.8671 93 1.8670 1.8669 ... 1.8585 1.8584 1.8578 1.8200 1.8869
93 AACG 1.8672 94 1.8671 1.8670 ... 1.8586 1.8585 1.8584 1.8578 1.8200
94 AACG 1.8673 95 1.8672 1.8671 ... 1.8587 1.8586 1.8585 1.8584 1.8578
95 ZYXI 5.2500 1 NaN NaN ... NaN NaN NaN NaN NaN
96 ZYXI 4.9600 2 5.2500 NaN ... NaN NaN NaN NaN NaN
97 ZYXI 4.9900 3 4.9600 5.2500 ... NaN NaN NaN NaN NaN
98 ZYXI 4.9900 4 4.9900 4.9600 ... NaN NaN NaN NaN NaN
99 ZYXI 4.9500 5 4.9900 4.9900 ... NaN NaN NaN NaN NaN
</code></pre>