<p>一种方法是只创建数据帧的两个副本,基本上手动创建“滞后”格式。你知道吗</p>
<p>请注意,如果您在问题中提供一种创建数据帧本身的方法,那么回答此类问题就容易得多。我添加了前三行的示例。你知道吗</p>
<pre><code>import pandas as pd
import numpy as np
temp = {'Company_name': ['ABC']*3,
'Year': [1996, 1998, 1999],
'Total_Damages': [1111, 2422, 3232],
'ROA': [2, 2, 9]}
df = pd.DataFrame(temp)
df1 = df.copy()
df2 = df.copy()
print(df)
#Output:
Company_name Year Total_Damages ROA
0 ABC 1996 1111 2
1 ABC 1998 2422 2
2 ABC 1999 3232 9
</code></pre>
<p>现在,对于上半年,我们只需将总损失设置为空,因为它们将“滞后”1年。你知道吗</p>
<pre><code>df1['Total_Damages'] = pd.np.nan
print(df1)
#Output:
Company_name Year Total_Damages ROA
0 ABC 1996 NaN 2
1 ABC 1998 NaN 2
2 ABC 1999 NaN 9
</code></pre>
<p>对于下半部分,我们增加年份,并将非滞后列设置为null(本例中为ROA)</p>
<pre><code>df2['Year'] += 1
df2['ROA'] = pd.np.nan
print(df2)
#Output:
Company_name Year Total_Damages ROA
0 ABC 1997 1111 NaN
1 ABC 1999 2422 NaN
2 ABC 2000 3232 NaN
</code></pre>
<p>最后,将数据帧连接在一起,并对索引进行排序,以获得彼此相邻的正确行。你知道吗</p>
<pre><code>out = pd.concat([df1, df2]).sort_index().reset_index(drop=True)
print(out)
#Output:
Company_name Year Total_Damages ROA
0 ABC 1996 NaN 2.0
1 ABC 1997 1111.0 NaN
2 ABC 1998 NaN 2.0
3 ABC 1999 2422.0 NaN
4 ABC 1999 NaN 9.0
5 ABC 2000 3232.0 NaN
</code></pre>