gpt4 book ai didi

python - Pandas :将一列的起始值乘以组内另一列的每个值

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:06 24 4
gpt4 key购买 nike

我有一些客户的起始值和一些 future 预期增长率。

这是一个简单的示例数据框:

df = pd.DataFrame([['A',1,10,np.nan],['A',2,10,1.2],['A',3,10,1.15],
['B',1,20,np.nan],['B',2,20,1.05],['B',3,20,1.2]],columns = ['Cust','Period','startingValue','Growth'])
print df

Cust Period startingValue Growth
0 A 1 10 NaN
1 A 2 10 1.20
2 A 3 10 1.15
3 B 1 20 NaN
4 B 2 20 1.05
5 B 3 20 1.20

对于每个 Cust,我想将起始值乘以增长率,然后将该值结转到下一个时期。我可以使用 groupby-apply 或丑陋的 for 循环来完成此操作,但我希望有一些更快的矢量化方法来执行此操作。我曾希望有一些 .fill() 魔法,你可以在向下填充时乘以另一列。输出应该如下所示:

 Cust  Period  startingValue  Growth  Pred_val
0 A 1 10 NaN 10.0
1 A 2 10 1.20 12.0
2 A 3 10 1.15 13.8
3 B 1 20 NaN 20.0
4 B 2 20 1.05 21.0
5 B 3 20 1.20 25.2

想法?

最佳答案

您可以使用 cumprod 函数进行累积乘积:

df['Pred_val'] = df.Growth.fillna(1).groupby(df.Cust).cumprod()*df.startingValue

关于python - Pandas :将一列的起始值乘以组内另一列的每个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44369986/

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