这是我在Cumulative sum of a pandas dataframe column without for loop?中提出的上一个问题的后续问题。
现在,我有一个pandas Dataframe df
,它最初有2列:id
和a
。例如,类似于
df = {'id': [1, 1, 1, 0, 0, 4, 5, 5], 'a': [2.5, 3.5, 1.0, 1.0 2.0, 4.0, 2.3, 4.4]}
我想制作
df = {'id': [1, 1, 1, 0, 0, 4, 5, 5], 'a': [2.5, 3.5, 1.0, 1.0 2.0, 4.0, 2.3, 4.4], 'b': [0, 2.5, 6.0, 0.0, 1.0, 0.0, 0.0, 2.3]}
因此,它引入了一个新列b
,其中包含每个唯一id
的累积和。有没有快速的方法来实现这一点?
请注意,唯一的id
将始终位于相邻的行中。
2条答案
按热度按时间eit6fx6z1#
可以将
GroupBy.apply
与pandas.Series.shift
一起使用:#输出:
xu3bshqb2#
您可以使用groupby()执行此操作,但返回DataFrame而不是单个行:
如果相邻的行中有相同的id,也可以尝试以下操作:
我故意留下了所有的列,这样更容易看到发生了什么。