Python:创建一个滞后(t-1)的多元素数据结构

Python: create a lag (t-1) data structure of multiple elements

我在为我的数据创建时间滞后列时遇到问题。当我为只有一种元素的数据框做这件事时它工作正常,但当我有不同的元素时它不能正常工作。例如,我的数据集看起来像这样:

使用命令时建议:

data1['lag_t'] = data1['total_tax'].shift(1)

我得到这样的结果:

如您所见,它只是将所有 'total_tax' 值替换了一行。但是,我需要为 id_inf 中的每一个(作为单独的项目)做这个延迟。

我的数据集真的很大,所以我需要想办法解决这个问题。所以我可以得到这样的 table 结果:

你可以groupby on index and shift

# an example with random data.
data1 = pd.DataFrame({'id': [9,9,9,54,54,54],'total_tax':[5,6,7,1,2,3]}).set_index('id')

data1['lag_t'] = data1.groupby(level=0)['total_tax'].apply(lambda x: x.shift())

print (data1)

    tax  lag_t
id            
9     5    NaN
9     6    5.0
9     7    6.0
54    1    NaN
54    2    1.0
54    3    2.0