基于第一级索引的移位值时间戳

问题描述

是否有更好的方法如何仅根据索引的第一级来移动数据框列的值?对于每周,我计算了每周的总和(第1列),我希望第二列的总和在一周前转移。

我设法通过移动(5 *第二个索引的长度)来做到这一点。 (因为不包括周末,所以有5个)

有没有一种方法可以根据时间戳索引来移位值?

df_test.to_clipboard(sep=',',index=True)
pd.read_clipboard(sep=',')

a=len(df_test.index.get_level_values(1).unique())
df_test['1_weeks_ago_sum'] =  df_test['weekly_sum'].shift(5*a)



               weekly_sum 1_weeks_ago_sum
date    level_1     
2019-01-16  AMB 3888.0  NaN
            COL 4774.0  NaN
            DGC 203.0   NaN
            DGZ 297.0   NaN
            FRZ 164.0   NaN
2019-01-17  AMB 3888.0  NaN
            COL 4774.0  NaN
            DGC 203.0   NaN
            DGZ 297.0   NaN
            FRZ 164.0   NaN
2019-01-18  AMB 3888.0  NaN
            COL 4774.0  NaN
            DGC 203.0   NaN
            DGZ 297.0   NaN
            FRZ 164.0   NaN
2019-01-21  AMB 6407.0  NaN
            COL 7200.0  NaN
            DGC 436.0   NaN
            DGZ 412.0   NaN
            FRZ 322.0   NaN
2019-01-22  AMB 6407.0  NaN
            COL 7200.0  NaN
            DGC 436.0   NaN
            DGZ 412.0   NaN
            FRZ 322.0   NaN
2019-01-23  AMB 6407.0  3888.0
            COL 7200.0  4774.0
            DGC 436.0   203.0
            DGZ 412.0   297.0
            FRZ 322.0   164.0
2019-01-24  AMB 6407.0  3888.0
            COL 7200.0  4774.0
            DGC 436.0   203.0
            DGZ 412.0   297.0
            FRZ 322.0   164.0
2019-01-25  AMB 6407.0  3888.0
            COL 7200.0  4774.0
            DGC 436.0   203.0
            DGZ 412.0   297.0
            FRZ 322.0   164.0
2019-01-28  AMB 6253.0  6407.0
            COL 7440.0  7200.0
            DGC 535.0   436.0
            DGZ 429.0   412.0
            FRZ 397.0   322.0
2019-01-29  AMB 6253.0  6407.0
            COL 7440.0  7200.0
            DGC 535.0   436.0
            DGZ 429.0   412.0
            FRZ 397.0   322.0
2019-01-30  AMB 6253.0  6407.0
            COL 7440.0  7200.0
            DGC 535.0   436.0
            DGZ 429.0   412.0
            FRZ 397.0   322.0

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)