滞后于按列分组的多个变量

时间:2020-07-15 23:01:52

标签: python python-3.x pandas pandas-groupby

我有一个6列的数据框

enter image description here

对于var1,var2,var3,我需要滞后1,2,而我期望的输出应类似于图像中的输出。

enter image description here

我设法编写了滞后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()

1 个答案:

答案 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)