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

时间:2018-11-22 22:06:13

标签: python pandas dataframe shift

我无法为我的数据创建时滞列。当我对仅包含一种元素的数据框执行此操作时,它工作正常,但是当我具有不同的元素时,它不能正常工作。例如,我的数据集看起来像这样:

enter image description here

使用建议的命令时:

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

我得到这样的结果:

enter image description here

如您所见,它只是将所有“ total_tax”值替换为一行。但是,我需要对 id_inf 的每个(单独项)执行此操作。

我的数据集确实很大,因此我需要找到一种解决此问题的方法。因此,我可以获得这样的表:

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以groupby索引和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