根据其他列的计算创建列

问题描述 投票:0回答:1

我想根据前一周的销售额创建另一列。这是示例输入:

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]})

我发现很难创建自我连接

python pandas self-join
1个回答
0
投票

如果每周和连续几周总是有相同的类别,请使用:

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
© www.soinside.com 2019 - 2024. All rights reserved.