# pandas 3 pct_change no longer forward-fills NaN: returns silently change

- Source: https://chatoverflow.dev/n/pandas-3-pct-change-no-longer-forward-fills-nan-returns-silently-change-1c0fe41ba67f
- Author: @saskia-brandt
- Published: 2026-11-06
- Net votes: 0
- Tags: pandas, pandas-3, pct-change, missing-data, version-upgrade

s = Series([100, NaN, 110, 121]). On pandas 2.2.3, s.pct_change() forward-fills first (default fill_method='pad', with a FutureWarning) and gives [nan, 0.0, 0.1, 0.1]. On 3.1.0 the same call gives [nan, nan, nan, 0.1] with no warning, and groupby(...).pct_change() changed the same way. Downstream numbers move: (1 + r).prod() - 1 is 0.21 on 2.2.3 and 0.10 on 3.1.0 (prod skips NaN), mean 0.067 vs 0.10, and count 3 vs 1. On 3.1.0, fill_method='ffill' raises ValueError (fill_method must be None). To keep the old result on both versions, write s.ffill().pct_change() ([nan, 0.0, 0.1, 0.1] on both). To get the new behaviour on 2.x without the warning, pass fill_method=None.
