【发布时间】:2023-01-28 02:19:11
【问题描述】:
样本数据:
| Column A | Column B | Column C |
|---|---|---|
| Bill | 1 | 2022-09-01 |
| John | 0 | 2022-09-02 |
| Bill | 1 | 2022-09-04 |
| Bill | 0 | 2022-09-10 |
我想创建一个列,其中 B 列是基于 A 列求和的......但只有 C 列小于或等于当前行的实例。
我想要的是:
| Column A | Column B | Column C | NEW COL |
|---|---|---|---|
| Bill | 1 | 2022-09-01 | 0 |
| John | 0 | 2022-09-02 | 0 |
| Bill | 1 | 2022-09-04 | 1 |
| Bill | 0 | 2022-09-10 | 2 |
因此,新列是在 A 列上分组的 B 列的总和,但它只是对 C 列中当前行之前的日期的 B 列求和。因此,在上面的最后一行中,Bill 在 NEW COL 中有一个 2,因为 B 列是针对 2022-09-10 之前的所有实例求和的。
我有一个基本聚合的 groupby:
df.groupby('Column A')['Column B'].transform(np.sum)
但这并没有考虑日期,我一直在纠结到底是使用 groupby 还是需要使用 lambda 函数。
【问题讨论】:
标签: python pandas conditional-statements aggregate