gpt4 book ai didi

python - 从满足条件的最后一行开始的 Pandas 累积总和

转载 作者:行者123 更新时间:2023-12-03 23:05:37 27 4
gpt4 key购买 nike

我有以下形式的数据框:

|----------|----|------|
|date |type|inflow|
|----------|----|------|
|2017-01-01|I | 3500|
|2017-02-01|A | 23|
|2017-07-01|A | 44|
|2017-09-01|A | 55|
|2017-12-01|A | 12|
|2018-01-01|I | 3800|
|2018-03-01|A | 87|
|2018-05-01|A | 34|
|2018-07-01|A | 23|
|----------|----|------|
I 是初始流入,As 是额外流入。它们不一定按年份分组,日期可以是任意的。我想要每行的累积总和,从我最后一次遇到 I 开始。所以当我遇到另一个 I 时,累积总和应该重置。如果有帮助,两个 Is 之间的最大 As 数可以是 5。
我尝试使用 apply 和 rollapply,但无法弄清楚如何在不一致的滚动窗口上应用它们。
我如何使用 Pandas 做到这一点?

最佳答案

让我们试试 GroupBy.cumsum :

df['inflow_cumsum'] = df.groupby(df['type'].eq('I').cumsum())['inflow'].cumsum()
df

date type inflow inflow_cumsum
0 2017-01-01 I 3500 3500
1 2017-02-01 A 23 3523
2 2017-07-01 A 44 3567
3 2017-09-01 A 55 3622
4 2017-12-01 A 12 3634
5 2018-01-01 I 3800 3800
6 2018-03-01 A 87 3887
7 2018-05-01 A 34 3921
8 2018-07-01 A 23 3944

详情 df['type'].eq('I').cumsum()用于标记流入组以执行分组累计总和。
请参阅下面的可视化:
type  type == "I"  (type == "I").cumsum()
I True 1
A False 1
A False 1
A False 1
A False 1
I True 2
A False 2
A False 2
A False 2
您会注意到 1s 和 2s 列将唯一标识组以执行 cumsum。

关于python - 从满足条件的最后一行开始的 Pandas 累积总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62892802/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com