从数据框中的另一列移动一列数字

Chi*_*u05 2 python dataframe python-3.x pandas

我有一个数据框,如下所示:

    Sales   Look_back_period
0   100     1
1   102     1
2   103     2
3   108     2
4   100     3
5   90      4
6   97      6

The output I want:
    Sales   Look_back_period    lag_sales
0   100     1                   NaN
1   102     1                   100
2   103     2                   100
3   108     2                   102
4   100     3                   102
5   90      4                   102
6   97      6                   100
Run Code Online (Sandbox Code Playgroud)

我想基于的方式改变销售价值Look_back_period.我在做的是:

df[‘lag_sales’] = df.Sales.shift(df.look_back_period)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

EdC*_*ica 5

实际上你可以reindex从索引中减去look_back_period值:

In[18]:
df['Look_back_period'] = df['Sales'].reindex(df.index - df['Look_back_period']).values
df

Out[18]: 
   Sales  Look_back_period  lag_sales
0    100               NaN        NaN
1    102             100.0      100.0
2    103             100.0      100.0
3    108             102.0      102.0
4    100             102.0      102.0
5     90             102.0      102.0
6     97             100.0      100.0
Run Code Online (Sandbox Code Playgroud)

我们必须转换为numpy数组使用,.values因为没有这个你将得到一个ValueError: cannot reindex from a duplicate axis错误