首页 > 解决方案 > 值来自行总和的新列(python)

问题描述

我需要创建一个新列,其值来自 3 行的总和。我的表如下所示:

shoes_type   category     number
sneakers        A           1
sneakers        B           2
sneakers        C           3
heels           A           2
heels           B           1
heels           C           7

新列预计如下:

shoes_type   category     number     total
sneakers        A           1          NaN
sneakers        B           2          NaN
sneakers        C           3          6
heels           A           2          NaN
heels           B           1          NaN
heels           C           7          10

新列是“数字”列每 3 行的总和。我想将每 3 行的总和放在最后一行,并让其他行为 NaN。

我怎样才能通过使用 python 来实现它?

谢谢 :)

标签: pythonpandas

解决方案


尝试transformmaskbyduplicated

df['total'] = df.groupby('shoes_type')['number'].transform('sum').mask(df['shoes_type'].duplicated(keep='last'))
df
Out[52]: 
  shoes_type category  number  total
0   sneakers        A       1    NaN
1   sneakers        B       2    NaN
2   sneakers        C       3    6.0
3      heels        A       2    NaN
4      heels        B       1    NaN
5      heels        C       7   10.0

推荐阅读