【发布时间】:2022-01-18 22:17:07
【问题描述】:
假设我有以下数据框
| date | flag | user | num | |
|---|---|---|---|---|
| 0 | 2019-01-01 | 1 | a | 10 |
| 1 | 2019-01-02 | 0 | a | 20 |
| 2 | 2019-01-03 | 1 | b | 30 |
| 3 | 2019-03-04 | 1 | b | 40 |
仅当 flag == 1 时,我才想创建按用户分组的 nums 的累积总和 所以我会得到这个:
| date | flag | user | num | cumsum | |
|---|---|---|---|---|---|
| 0 | 2019-01-01 | 1 | a | 10 | 10 |
| 1 | 2019-01-02 | 0 | a | 20 | 10 |
| 2 | 2019-01-03 | 1 | b | 30 | 30 |
| 3 | 2019-03-04 | 1 | b | 40 | 70 |
到目前为止,我能够按标志进行 cumsum,而忽略用户分组
df['cumsum'] = df[df['flag'] == 1 ]['num'].transform(pd.Series.cumsum)
或用户无视标志的 cumsum
df['cumsum'] = df.groupby('user')['num'].transform(pd.Series.cumsum)
我需要帮助让他们一起工作。
【问题讨论】:
标签: python pandas dataframe pandas-groupby cumsum