首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大熊猫的矢量化生长计算

大熊猫的矢量化生长计算
EN

Stack Overflow用户
提问于 2022-10-02 00:31:42
回答 1查看 52关注 0票数 1

我很难为以下问题创建一个矢量化的解决方案:

代码语言:javascript
复制
    bp   sp    pct_growth
0  1.0  2.0         100.0
1  1.0  1.5          50.0
2  1.0  2.0         100.0

我需要根据初始数量(假设1000)计算绝对累积增长:

代码语言:javascript
复制
    bp   sp    pct_growth    abs_growth
0  1.0  2.0         100.0        2000.0
1  1.0  1.5          50.0        3000.0
2  1.0  2.0         100.0        6000.0

下面的代码可以工作,但是我想找到一个矢量化的解决方案:

代码语言:javascript
复制
a = [{'bp': 1.0, 'sp': 2}, {'bp': 1.0, 'sp': 1.5}, {'bp': 1.0, 'sp': 2}]
df2 = pd.DataFrame(a)

df2['pct_growth'] = df2[['bp','sp']].pct_change(axis=1)['sp'] * 100

for index, row in df2.iterrows():
  if index == 0:
    df2.loc[index, 'abs_growth'] = 1000 + 1000*row['pct_growth']/100
  else:
    df2.loc[index, 'abs_growth'] = df2.loc[index-1, 'abs_growth'] + df2.loc[index-1, 'abs_growth']*row['pct_growth']/100
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-02 00:39:21

您可以通过(1 + df.pct_growth / 100).cumprod()计算绝对增长率,然后再乘以逻辑定义的base

代码语言:javascript
复制
base = 1000
df['abs_growth'] = (1 + df.pct_growth / 100).cumprod() * base

df
    bp   sp  pct_growth  abs_growth
0  1.0  2.0       100.0      2000.0
1  1.0  1.5        50.0      3000.0
2  1.0  2.0       100.0      6000.0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73922633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档