gpt4 book ai didi

python-3.x - 给定增长率和特殊规则,如何获得 Pandas 的累积增长?

转载 作者:行者123 更新时间:2023-12-04 10:27:30 26 4
gpt4 key购买 nike

我有这个数据框:

date    amount
2018/01 100
2018/02 105
2018/03 110.25
2018/04 200

正如您所看到的,每个月的金额都在增加之前值的 5%。但是,每第 4 个月(2018/04),此规则不适用。相反,它应该只超过例如 200 的常数值。

我如何在 Pandas 数据框中编程?

最佳答案

@Lroy_12374 目前尚不清楚 5-8 月及以后会发生什么,这会影响如何编写逻辑。例如:
a) 第 5 个月是否应该比第 3 个月高 5%?或者
b) 是否应该比每四个月高 5%(即 2018 年 4 月、2018 年 8 月、2018 年 12 月、2019 年 4 月、2019 年 8 月、2019 年 12 月等)?或者
c) 如果第 4 个月不是常数,它应该比第 4 个月高 5%,这意味着第 5 个月是 1.05^2*(第 3 个月)。

此外,常量的定义也不清楚。从字面上看,每四个月它会是 200 还是什么?或者,它会是一个不同的数字,不遵循其他 3 个月的模式。

我已经为上面的场景 c) 编写了一些代码:

import pandas as pd
import numpy as np
df = pd.DataFrame({'date' : ['2018/01','2018/02','2018/03',
'2018/04','2018/05','2018/06','2018/07', '2018/08']})
start_amount = 100
constant=200
growth=.05
df['amount'] = np.where((df.index+1)%4 != 0,
start_amount * (1+growth) ** df.index, constant)
df

这里的关键是使用 np.where 并根据行号实现逻辑,您可以通过 获得df.index .我在上面的代码中所做的是在行 中加 1 (df.index+1) ,因为 python 从 0 开始计数,并且您需要基于第四个月的逻辑。然后,我使用 % 符号,它返回除法后的余数,如果它是第四行(即 4/4 = 余数 0),你希望它等于 0。因此,基本上,根据行号,不是每第四行都需要乘以 1.05(增加 5%) RAISED 的地方,以及您想要返回常量的第四行。

我希望这有帮助。

关于python-3.x - 给定增长率和特殊规则,如何获得 Pandas 的累积增长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60571819/

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