here is my sample df:
x y 0 0 1.1 1 1 3.9 2 2 11.2 3 3 21.5 4 4 34.8 5 5 51.0 6 6 70.2 7 7 NaN 8 8 NaN 9 9 NaN
If I would like to replace the NaN values and ffill the last number (70.2 – in this case), I would simply apply:
df['y'].ffill(inplace=True)
However, what if I would like to apply a custom function instead of ffill() method: For instance, I need the NaN values of y column to be replaced with “2 * x^2”. See the desired output df:
x y 0 0 1.1 1 1 3.9 2 2 11.2 3 3 21.5 4 4 34.8 5 5 51.0 6 6 70.2 7 7 98 8 8 128 9 9 162
Just to illustrate: 2 * 7^2 = 98 etc
I appreciate any help.
Advertisement
Answer
In your case do
df['y'] = df.y.fillna(df.x**2*2) 0 1.1 1 3.9 2 11.2 3 21.5 4 34.8 5 51.0 6 70.2 7 98.0 8 128.0 9 162.0 Name: y, dtype: float64