我想根据前一周的销售额创建另一列。这是示例输入:
df = pd.DataFrame({'Week':[1,1,2,2,3,3,4,4,5,5],
'Category':['Red','White','Red','White','Red','White','Red','White','Red','White'],
'Sales':[100,200,300,400,100,200,300,400,100,200]})
基于此,我想创建另一列,不过是前一周的销售额。这是所需输出的示例
df_output = pd.DataFrame({'Week':[1,1,2,2,3,3,4,4,5,5],
'Category':['Red','White','Red','White','Red','White','Red','White','Red','White'],
'Sales':[100,200,300,400,100,200,300,400,100,200],
'Sales_PREVIOUS WEEK':[0,0,100,200,300,400,100,200,300,400]})
我发现很难创建自我连接
如果每周和连续几周总是有相同的类别,请使用:
df['Sales_PREVIOUS'] = df.groupby('Category')['Sales'].shift(fill_value=0)
print (df)
Week Category Sales Sales_PREVIOUS
0 1 Red 100 0
1 1 White 200 0
2 2 Red 300 100
3 2 White 400 200
4 3 Red 100 300
5 3 White 200 400
6 4 Red 300 100
7 4 White 400 200
8 5 Red 100 300
9 5 White 200 400