Difference between interpolate() and fillna() in pandas
fillna fills the NaN values with a given number with which you want to substitute. It gives you an option to fill according to the index of rows of a pd.DataFrame or on the name of the columns in the form of a python dict. 

But interpolate is a god in filling. It gives you the flexibility to fill the missing values with many kinds of interpolations between the values like linear (which fillna does not provide) in the example provided below and many more interpolations possible. For example

&gt;&gt; import pandas as pd, numpy as np
&gt;&gt; df = pd.Series([1, np.nan, np.nan, 3])
&gt;&gt; df.interpolate()
0    1.000000
1    1.666667
2    2.333333
3    3.000000
dtype: float64


Pandas documentation on fillna and interpolate is very clear on this.