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

Python:创建多个元素的lag(t-1)数据结构,python,pandas,dataframe,shift,Python,Pandas,Dataframe,Shift,我在为我的数据创建时间延迟列时遇到问题。当我对一个只有一种元素的数据帧这样做时,它工作得很好,但当我有不同的元素时,它工作得不好。例如,我的数据集如下所示: 使用建议的命令时: data1['lag_t'] = data1['total_tax'].shift(1) 我得到的结果如下: 如您所见,它只是将所有的“total_tax”值替换为一行。但是,我需要为每个id\u inf执行此延迟(作为单独的项) 我的数据集非常庞大,所以我需要找到一种方法来解决这个问题。因此,我可以得到如下表格:

我在为我的数据创建时间延迟列时遇到问题。当我对一个只有一种元素的数据帧这样做时,它工作得很好,但当我有不同的元素时,它工作得不好。例如,我的数据集如下所示:

使用建议的命令时:

data1['lag_t'] = data1['total_tax'].shift(1)
我得到的结果如下:

如您所见,它只是将所有的“total_tax”值替换为一行。但是,我需要为每个id\u inf执行此延迟(作为单独的项)

我的数据集非常庞大,所以我需要找到一种方法来解决这个问题。因此,我可以得到如下表格:

您可以在索引和

# 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