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