首页 > 解决方案 > 每组先前行的总和

问题描述

我有一个看起来像这样的数据框。

d = {'name': ["eric", "eric","eric", "sean","sean","sean"], 'values': [1, 5, 7, 4, 2, 5]}
df = pd.DataFrame(data=d)

我正在尝试添加一个名为 df['sum'] 的新列,它将 df['name'] 列中每个唯一名称的前一行的值相加,使其看起来像这样:

name    values    sum
eric    1         1
eric    5         6
eric    4         10
sean    7         7
sean    2         9
sean    5         14

我尝试使用以下内容,但无法弄清楚每次获得新名称时如何让它重新开始。

for i in df['name']:
    df['sum'] = df['values'].cumsum()

标签: pandasdataframe

解决方案


利用groupby().cumsum()

df.groupby('name').values.cumsum()

推荐阅读