Good question 👍 — in Pandas, the method parameter in the DataFrame.interpolate() or Series.interpolate() function can take many different values depending on the interpolation axis and backend (scipy vs internal).
Let’s break it down clearly 👇
🧩 1. Core interpolation methods (built into pandas)
These work without requiring SciPy:
| Method | Description |
|---|---|
'linear' |
Linear interpolation between points (default). |
'time' |
Works for time-indexed data — interpolates along the time dimension. |
'index' |
Similar to linear but uses the index values for interpolation (good for non-numeric indexes). |
'values' |
Uses numerical values for interpolation (same as 'linear' for most cases). |
'pad' / 'ffill' |
Forward fill — propagate last valid value forward. |
'backfill' / 'bfill' |
Backward fill — use next valid value. |
'nearest' |
Use nearest available value. |
'polynomial' (requires SciPy) |
Polynomial interpolation of given order (e.g., order=2). |
'spline' (requires SciPy) |
Spline interpolation (order specified). |
'quadratic', 'cubic' (require SciPy) |
Special cases of spline with order 2 or 3. |
'barycentric', 'krogh', 'piecewise_polynomial', 'slinear', 'pchip', 'akima' (require SciPy) |
Various higher-level interpolation schemes. |
🧮 2. Full list when SciPy is installed
If SciPy is installed, these are the recognized methods:
['linear', 'time', 'index', 'values', 'nearest', 'zero', 'slinear', 'quadratic', 'cubic', 'polynomial', 'barycentric', 'krogh', 'piecewise_polynomial', 'spline', 'pchip', 'akima', 'from_derivatives', 'pad', 'ffill', 'backfill', 'bfill']
That’s about 20 distinct methods.
✅ Example
import pandas as pd import numpy as np s = pd.Series([1, np.nan, 3, np.nan, 7]) # Linear interpolation s.interpolate(method='linear') # Cubic interpolation (requires SciPy) s.interpolate(method='cubic') # Forward fill s.interpolate(method='pad')
🧠 Summary
| Category | Examples | SciPy Required? |
|---|---|---|
| Basic | 'linear', 'time', 'index', 'nearest', 'pad', 'bfill' |
❌ No |
| Polynomial / spline | 'polynomial', 'spline', 'quadratic', 'cubic' |
✅ Yes |
| Advanced SciPy-based | 'pchip', 'akima', 'barycentric', 'krogh', 'from_derivatives' |
✅ Yes |
Would you like me to show which ones are between linear and cubic in terms of smoothness/complexity (e.g., quadratic, spline of order 2, etc.)?
You said:
ChatGPT said:
Excellent — and that’s a realistic and common error 👍
Let’s break down why it happens and how to fix it 👇
💥 The Error
ValueError: The number of derivatives at boundaries does not match: expected 1, got 0+0 This comes from SciPy’s cubic spline interpolation (which pandas.interpolate(method='cubic') internally uses).
It means:
There aren’t enough valid (non-NaN) data points to construct a cubic spline.
⚙️ Why It Happens
A cubic spline needs at least 4 non-null points to compute the interpolation because:
-
It fits a 3rd-degree polynomial between segments.
-
It also needs derivative continuity at boundaries.
In your example:
s = pd.Series([1, np.nan, 3, np.nan, 7]) There are only 3 valid points (1, 3, 7), which is not enough to construct a full cubic spline.
Hence SciPy throws the above ValueError.
✅ Fixes
✅ Option 1: Use a lower-order method (e.g. 'quadratic' or 'slinear')
They need fewer points:
s.interpolate(method='quadratic') s.interpolate(method='slinear') # piecewise linear (safe)
✅ Option 2: Add more non-NaN values
If you had at least 4 valid points:
s2 = pd.Series([1, np.nan, 3, 4, np.nan, 7, 9]) s2.interpolate(method='cubic')
→ This will work correctly.
✅ Option 3: Use simpler built-ins ('linear', 'nearest', 'pad', etc.)
s.interpolate(method='linear')
These don’t need many data points and never raise that spline error.
🧠 Summary
| Method | Minimum valid points | Notes |
|---|---|---|
'linear' |
2 | Always safe |
'quadratic' |
3 | Requires SciPy |
'cubic' |
4 | Requires SciPy, often raises this error if too few data points |
'spline' |
order + 1 | e.g., order=3 → 4 points |
'pchip', 'akima' |
≥ 2 | Smooth alternatives to cubic, safer |

浙公网安备 33010602011771号