There is df2 Pandas dataframe: surgery age rectal_temp pulse respiratory_rate extremities_temp pain outcome 4 2.0 1 NaN NaN NaN 2.0 2.0 1.0 6 1.0 1 NaN 60.0 NaN 3.0 NaN 2.0 7 2.0 1 NaN 80.0 36.0 3.0 4.0 3.0 15 1.0 9 NaN 128.0 36.0 3.0 4.0 2.0 27 1.0 1 NaN NaN NaN NaN NaN 2.0 33 1.0 1 NaN 100.0 30.0 3.0 5.0 1.0 34 2.0 1 NaN 104.0 24.0 4.0 4.0 3.0 39 1.0 1 NaN 88.0 NaN 3.0 5.0 2.0 Write a function that: 1) takes as a parameter the column name (default = 'rectal_temp') 2) for each NaN line in this column, find a non-NaN line which has similar values in the pulse or respiratory_rate columns (the difference range is 20%) 3) replace NaN with values from the corresponding rows

`def fill_na(df, col_name='rectal_temp', range_thresh=0.2): col_vals = df[col_name] col_vals_notnull_ind = col_vals.notnull() col_vals_notnull_ind = col_vals_notnull_ind.values[:, np.newaxis] col_vals_notnull = col_vals.loc[col_vals_notnull_ind].values col_vals_notnull_idx = col_vals_notnull_ind.nonzero()[0] for i in range(0, col_vals.shape[0]): if not col_vals_notnull_ind[i]: for j in range(0, col_vals_notnull.shape[0]): if (col_vals_notnull[j] - col_vals_notnull[j] * range_thresh) < col_vals[i] < (col_vals_notnull[j] + col_vals_notnull[j] * range_`