如何按组对数据框中的值求和,直到其他列中的某些值为止?

How to sum values in dataframe until certain values in other column by group?

我有一个数据框:

id   life_day   value
a1     1         10
a1     2         20
a1     3         10
a1     4         5
a1     5         5
a1     6         1
b2     1         7
b2     3         11
b2     4         10
b2     5         20

我想对每个 id 的值求和,直到 life_day 4。所以期望的结果是:

id    life_day   value
a1       4         45
b2       4         28

怎么做?我尝试了 df[df["life_day"] == 90].groupby("id).sum() 但得到了错误的结果

你的方法差不多可行,但我不知道你为什么在 df["life_day"] == 90 中写 == 90,看起来你想要 max life_day,不是总和。

df[df['life_day'] <= 4].groupby('id').agg({'life_day': 'max', 'value': 'sum'})
    life_day  value
id                 
a1         4     45
b2         4     28

使用pandas where条件屏蔽然后groupby agg

df.where(df['life_day'].le(4)).groupby('id').agg({'life_day':'last','value':'sum'}).reset_index()
   id  life_day  value
0  a1       4.0   45.0
1  b2       4.0   28.0