我有一个6列的数据框
对于var1,var2,var3,我需要滞后1,2,而我期望的输出应类似于图像中的输出。
我设法编写了滞后1的代码,其工作情况如下。我应该如何迭代以获得多个延迟列表:
代码:
g_df = df_m.groupby(["grp"])
def lag_by_grp(key,value_df):
df = value_df.assign(group = key)
return (df.set_index(['grp','abc2','abc3']).shift(1)
dfl = [lag_by_grp(g, g_df.get_group(g)) for g in g_df.groups.keys()]
d_lag = pd.concat(dfl, axis=0).reset_index()
答案 0 :(得分:2)
先检查shift
,然后再检查concat
lag=[1,2]
df=pd.concat([df]+[df.groupby('grp')['var1','var2','var3'].shift(x).add_prefix('lag'+str(x)) for x in lag],axis=1)