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

如何让Pandas DataFrame连续0值时pct_change返回0而非NaN

解决DataFrame连续0时pct_change返回NaN的问题

可以用Pandas的向量化操作实现,完全不需要循环:

  1. 先构造示例DataFrame(模拟包含原始NaN和连续0的场景):
import pandas as pd
df = pd.DataFrame({'col': [0, 0, 5, 5, None, 0, 0]})
  1. 计算原始百分比变化:
pct_result = df['col'].pct_change()
  1. 创建布尔掩码,定位当前行和上一行都是0的位置:
mask = (df['col'] == 0) & (df['col'].shift(1) == 0)
  1. 将掩码匹配到的位置的NaN替换为0,其他NaN保持不变:
pct_result = pct_result.mask(mask, 0)

最终得到的pct_result结果如下:

0    NaN
1    0.0
2    inf
3    0.0
4    NaN
5    NaN
6    0.0
Name: col, dtype: float64

这个方法完全遵循Pandas的向量化操作风格,效率远高于循环,同时精准处理了连续0的场景,不会误改原始数据中的其他NaN。

内容的提问来源于stack exchange,提问作者John Glen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:54:26