piRSquared piRSquared - 11 months ago 59
Python Question

pandas interpolate only when values exist on both sides



import pandas as pd
import numpy as np

s = pd.Series([np.nan, 1, np.nan, 3, np.nan])

How do I interpolate to get:

pd.Series([np.nan, 1, 2, 3, np.nan])

0 NaN
1 1.0
2 2.0
3 3.0
4 NaN
dtype: float64

note: I want the first and last
to remain

I only want to fill in values when I have values on both sides to do the the interpolation.

In other words, I want to interpolate, not extrapolate.

Answer Source

I do this - skipping the heading and tailing NAs: