我有一个数据框:
Item Year Week Qnty Start_season
1 160947 2018 01 0 0
2 160947 2018 08 0 0
3 160947 2018 09 9 1
4 160947 2018 10 12 1
5 160947 2018 11 99 1
其中 Item 是产品,Year 是销售年份,Week 是销售周数,Qnty 是本周的销售量,Start_season 是季节的开始时间段
我需要找到赛季结束并制作一个单独的字段,其中将写入标志 1 - 赛季结束是本周,0 - 赛季结束不是本周。季末是 Qnty 值(一周的总值)与 Start_season = 1(季节开始)时的 Qnty 值相差 +/- 10% 的时期。
像这样尝试:
df['Finish_season'] = np.where((df['Start_season'] == 1) & (ufloat((df['Qnty'].shift(-1) - df['Qnty'])/df['Qnty']*100 , 10)),1,0)
但它不起作用。
因此,我想获得以下 DataFarme:
Item Year Week Qnty Start_season Finish_season
1 160947 2018 01 0 0 0
2 160947 2018 08 0 0 0
3 160947 2018 09 9 1 0
4 160947 2018 10 12 1 1
5 160947 2018 11 99 1 1
在获取 Finish_season 列时,我们比较 Qnty= 12 大于 Qnty = 9 & Start_season=1 的次数,如果百分比值为 +/- 10,我们设置 Finish_season = 1。
结果:
更新: