You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas使用pct_change()遇除数为0返回inf的高效处理方法问询

实现方案

pandas 内置的pct_change()目前没有提供除数为0时的默认替换参数,你可以用以下两种高效的向量化方案实现需求,不需要手动拆分计算分子分母:

方案1:替换pct_change()返回的inf值

pct_change()返回inf的唯一场景是上一期数值为0,此时你的需求等价于将除数替换为1,计算结果刚好等于当期数值,直接做值替换即可:

import numpy as np
result = df_num.pct_change().iloc[-1].replace(np.inf, df_num.iloc[-1])

输出结果:

col1    2.0
col2    3.0
Name: 1, dtype: float64

方案2:直接按公式实现,除数层替换0

如果你不想依赖inf识别的逻辑,也可以直接按变化率公式链式调用实现,适配任意行数的变化率计算:

result = (df_num.diff() / df_num.shift().replace(0, 1)).iloc[-1]

两种方案的性能都和原生pct_change()基本一致,都是pandas底层的向量运算,远快于手动逐行计算的实现。

内容的提问来源于stack exchange,提问作者Ashik Mydeen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:15:04