Вы можете попробовать это (это решение для Lat и то же самое можно сделать для Long):
df = pd.DataFrame({'Lat':[35.61069, np.nan, np.nan, np.nan, 35.610692], 'Long': [139.630428, np.nan, np.nan, np.nan, 139.630428]})
df
Lat Long
0 35.610690 139.630428
1 NaN NaN
2 NaN NaN
3 NaN NaN
4 35.610692 139.630428
Давайте создадим новый столбец с последним значением, отличным от Nan Lat
df['Lat_shift'] = df['Lat'].shift()
df['Lat_shift'] = df['Lat_shift'].fillna(method='ffill')
df
Lat Long Lat_shift
0 35.610690 139.630428 NaN
1 NaN NaN 35.61069
2 NaN NaN 35.61069
3 NaN NaN 35.61069
4 35.610692 139.630428 35.61069
Теперь мы можем вычислить любую метрику c, которую мы хотим:
df['Lat_new'] = df['Lat_shift'] + (df['Lat'] - df['Lat_shift'])/2
Lat Long Lat_shift Lat_new
0 35.610690 139.630428 NaN NaN
1 NaN NaN 35.61069 NaN
2 NaN NaN 35.61069 NaN
3 NaN NaN 35.61069 NaN
4 35.610692 139.630428 35.61069 35.610691
и использовать ее для заполнения значений nan:
df.loc[pd.isnull(df['Lat']), 'Lat'] = df['Lat_new'].fillna(method='bfill')
df.drop(columns=['Lat_shift', 'Lat_new'])
Lat Long
0 35.610690 139.630428
1 35.610691 NaN
2 35.610691 NaN
3 35.610691 NaN
4 35.610692 139.630428
Надеюсь, это поможет: )