【发布时间】:2017-05-04 01:28:29
【问题描述】:
我有一个使用 pivot_table 方法从另一个 pandas 数据框(按商店销售)创建的数据透视表 Pandas 数据框(按地区销售)。
举个例子:
df = pd.DataFrame(
{'store':['A','B','C','D','E']*7,
'region':['NW','NW','SW','NE','NE']*7,
'date':['2017-03-30']*5+['2017-04-05']*5+['2017-04-07']*5+['2017-04-12']*5+['2017-04-13']*5+['2017-04-17']*5+['2017-04-20']*5,
'sales':[30,1,133,9,1,30,3,135,9,11,30,1,140,15,15,25,10,137,9,3,29,10,137,9,11,30,19,145,20,10,30,8,141,25,25]
})
df_sales = df.pivot_table(index = ['region'], columns = ['date'], aggfunc = [np.sum], margins = True)
df_sales = df_sales.ix[:,range(0, df_sales.shape[1]-1)]
我的目标是对销售数据框执行以下操作。
添加一个名为“周差”的列,用于计算本周的总销售额与前一周的最新值(按日期)之间的差值。假设:我每周总是有几天的数据,但不是固定的日子。 随着新数据的到来,周差列会有所不同,但对于最新数据,如下所示:
>>> df_sales
sum \
sales
date 2017-03-30 2017-04-05 2017-04-07 2017-04-12 2017-04-13 2017-04-17
region
NE 10.0 20.0 30.0 12.0 20.0 30.0
NW 31.0 33.0 31.0 35.0 39.0 49.0
SW 133.0 135.0 140.0 137.0 137.0 145.0
All 174.0 188.0 201.0 184.0 196.0 224.0
date 2017-04-20 WeekDifference
region
NE 50.0 50.0-20.0
NW 38.0 38.0-39.0
SW 141.0 141.0-137.0
All 229.0 229-196.0
因为它是最晚日期和前一周最晚日期之间的差异。在这个具体的例子中,我们是在 2017-04-20 周,前一周数据的最后一天是 2017-04-13。
随着数据的更新,我想以一般方式执行此操作。
【问题讨论】: