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 结果:
# 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
我在为我的数据创建时间滞后列时遇到问题。当我为只有一种元素的数据框做这件事时它工作正常,但当我有不同的元素时它不能正常工作。例如,我的数据集看起来像这样:
使用命令时建议:
data1['lag_t'] = data1['total_tax'].shift(1)
我得到这样的结果:
如您所见,它只是将所有 'total_tax' 值替换了一行。但是,我需要为 id_inf 中的每一个(作为单独的项目)做这个延迟。
我的数据集真的很大,所以我需要想办法解决这个问题。所以我可以得到这样的 table 结果:
# 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