我试图将第二个数据帧的索引设置为第一个数据帧的索引,以便以后可以通过将在所有数据帧之间匹配的索引来引用行。
这样做的目的是让我引用原始的需求数据框,以及在同一会计年度/每周上都应用了.rolling(window = X).mean()的后续数据框来执行一些计算
我尝试过的内容
demand_df_7wkfwdavg = demand_df_7wkfwdavg.reindex_like(demand_df)
demand_df_7wkfwdavg = demand_df_7wkfwdavg.set_index(demand_df.index)
也参考reindex,set_index,reindex_like进入文档,但是要么使新数据框从201840开始,NaN一直到201846,要么得到一个错误,说明长度与两个数据框的索引之间不匹配(他们不会,他们将是57岁,而65岁是给予或接受)
让我们一臂之力
我有两个数据帧,第一个是Demand_df,第二个是Demand_df_7wkfwdavg。
第一个数据帧的设置是这样的,其中第一列是索引,也指示会计年度/周,第二列是该特定项目的需求值(列标题是该项目名称):
201840 344.75
201841 433.75
201842 344.75
201843 355.75
201844 241.60
201845 241.60
201846 241.60
以相同的方式设置第二个数据帧,但是在这种情况下,在执行以下命令后,它将从201846开始:
###Applies a rolling average to each column using the window size specified
demand_df_7wkfwdavg = demand_df.rolling(window=7).mean()
###Fill any NaN's with zeroes
demand_df_7wkfwdavg = demand_df_7wkfwdavg.fillna(0)
###Round the numbers to 2 decimal places
demand_df_7wkfwdavg = demand_df_7wkfwdavg.round(2)
###Remove any row that sums zero
demand_df_7wkfwdavg = demand_df_7wkfwdavg.loc[(demand_df_7wkfwdavg!=0).any(axis=1)]
201846 314.54
201847 299.81
201848 272.36
最终状态目标示例
考虑当前周的需求(201840),查看所有其他数据框并提取相应的值,因此在这种情况下,它将查看第二个数据框,并说第一个数据框中的类似商品的201840 = 314.54,而不是201846 = 314.54。
所需的输出:
201840 314.54
201841 299.81
201842 272.36
当前输出:
201846 314.54
201847 299.81
201848 272.36
答案 0 :(得分:0)
总结您的问题,您似乎想要前进平均值,但实际上是在计算后退平均值。有一些解决索引问题的方法(例如切片),但我认为一种更有效的方法是在计算平均值时移动值。
如果您更改:
demand_df_7wkfwdavg = demand_df.rolling(window=7).mean()
到
demand_df_7wkfwdavg = demand_df.rolling(window=7).mean().shift(-6)
您将获得所需的输出,而无需添加任何步骤。