Python 3.x 在给定生长速率和特殊规则的情况下,如何获得大熊猫的累积生长量?

Python 3.x 在给定生长速率和特殊规则的情况下,如何获得大熊猫的累积生长量?,python-3.x,pandas,numpy,Python 3.x,Pandas,Numpy,我有这个数据框: date amount 2018/01 100 2018/02 105 2018/03 110.25 2018/04 200 如你所见,每个月,该金额都会比之前的值增加5%。但是,每4个月(2018/04),该规则不适用。相反,它应该仅超过常量值200,例如 如何在熊猫数据框中编程?@Lroy_12374不清楚5-8月及以后会发生什么,这将影响如何编写逻辑。例如: a) 第5个月是否应该比第3个月高5%?或 b) 是否比每四个月(即2018年4月、2018年8月、201

我有这个数据框:

date    amount
2018/01 100
2018/02 105
2018/03 110.25
2018/04 200
如你所见,每个月,该金额都会比之前的值增加5%。但是,每4个月(2018/04),该规则不适用。相反,它应该仅超过常量值200,例如


如何在熊猫数据框中编程?

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

此外,常数的定义也不清楚。从字面上讲,每四个月是200美元还是更多?或者,这将是一个不同的数字,不遵循其他3个月的模式

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

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


我希望这能有所帮助。

你有什么问题?@datanoveler我不确定要使用哪个pandas命令来构造逻辑。你能帮我吗?你的起始数据帧是什么?@datanovel我只有列amount中的第一个值,即“100”。从那以后,我每个月都要继续这个序列。答案很好,比我之前对hanks@datanoveler做的要好
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