问题描述
是否有更好的方法如何仅根据索引的第一级来移动数据框列的值?对于每周,我计算了每周的总和(第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 (将#修改为@)