我在Python中有这个DataFrame(假设它已排序):

Col1 Col2 Col3
a    1    2
a    2    3
a    4    6
b    3    7
b    5    1


我想添加一个名为Col4的新列,其中每个值是当前Col3和上一行Col3的加和。

它应该通过对Col1进行分组来运行此逻辑,如果它是组中的第一行,则它仅使用当前值Col3。

所以它应该看起来像这样:

Col1 Col2 Col3 Col4
a    1    2    2 (i.e. 2 - it is the first in first row group)
a    2    3    5 (i.e. 2+3)
a    4    6    9 (i.e. 3+6)
b    3    7    7 (i.e. 7 - it is the first row in second group)
b    5    1    8 (i.e. 7+1)


如何在Python中完成(希望使用groupBy)?

谢谢

最佳答案

您可以在每个组中使用shift

df['Col4'] = df['Col3'] + df.groupby('Col1')['Col3'].shift(1).fillna(0)

>>> df
  Col1  Col2  Col3  Col4
0    a     1     2   2.0
1    a     2     3   5.0
2    a     4     6   9.0
3    b     3     7   7.0
4    b     5     1   8.0

关于python - 分组并在Python中添加新的计算列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52819933/

10-12 20:13