样本数据:
| 色谱柱A|B栏|C栏|
| - ------|- ------|- ------|
| 比尔|1个|2022年9月1日|
| 约翰|无|2022年9月2日|
| 比尔|1个|2022年9月4日|
| 比尔|无|2022年9月10日|
我想创建一个列,其中列B基于列A求和...但仅限于列C小于或等于当前行的示例。
我想要的:
| 色谱柱A|B栏|C栏|新列|
| - ------|- ------|- ------|- ------|
| 比尔|1个|2022年9月1日|无|
| 约翰|无|2022年9月2日|无|
| 比尔|1个|2022年9月4日|1个|
| 比尔|无|2022年9月10日|第二章|
因此,新列是在列A上分组的列B的总和,但它只是对列C中早于当前行的日期的列B求和。因此,在上面的最后一行中,Bill在NEW COL中有一个2,因为列B是对2022 - 09 - 10之前的所有示例求和的。
我使用groupby进行基本聚合:
df.groupby('Column A')['Column B'].transform(np.sum)
但是这并没有考虑到日期,我被困在是否使用groupby或者是否需要使用lambda函数来代替。
2条答案
按热度按时间4ioopgfo1#
试试这个。
5m1hhzi42#
您可能希望每组有一个移位的
cumsum
:输出:
处理重复日期
输出: