I have following dataframe df1, which actually represents grid with coordinates:
latitude longitude level time
0 40.008606 20.114280 880.0 3/31/1981 5:00
1 40.008606 20.114280 880.0 3/31/1981 6:00
2 40.008606 20.114280 880.0 3/31/1981 7:00
3 40.008606 20.114280 880.0 3/31/1981 8:00
4 39.665283 20.097115 855.0 3/31/1981 5:00
5 39.665283 20.097115 855.0 3/31/1981 6:00
6 39.665283 20.097115 855.0 3/31/1981 7:00
7 39.665283 20.097115 855.0 3/31/1981 8:00
8 39.665283 19.911120 860.0 3/31/1981 5:00
9 39.665283 19.911120 860.0 3/31/1981 6:00
10 39.665283 19.911120 860.0 3/31/1981 7:00
11 39.665283 19.911120 860.0 3/31/1981 8:00
I want to normalize - interpolate 4d weather data to above grid, whereas latitude, longitude, level and time are dimensions. Values in resolution 0.25deg latitude and longitude and in resolution of 25mbar level are in below dataframe df2:
latitude level longitude time t
0 40.00 875.0 20.00 3/31/1981 5:00 7.622246
1 40.00 875.0 20.00 3/31/1981 6:00 8.832257
2 40.00 875.0 20.00 3/31/1981 7:00 1.107310
3 40.00 875.0 20.00 3/31/1981 8:00 11.144372
4 40.00 900.0 20.00 3/31/1981 5:00 8.736878
.. ... ... ... ... ...
66 40.25 900.0 20.25 3/31/1981 8:00 6.014550
67 40.25 850.0 20.25 3/31/1981 5:00 6.729872
68 40.25 850.0 20.25 3/31/1981 6:00 8.098390
69 40.25 850.0 20.25 3/31/1981 7:00 5.234497
70 40.25 850.0 20.25 3/31/1981 8:00 5.968091
Entire dataframe is on this link. So, what I need is column t of dataframe df2 spread-normalized over dataframe df1 in form of new column in df1. Hope desired output is clear.
So far, i am considering this post solution, but It uses same datatype for all dimensions, which is not case here. I managed to find nearest latitude, longitude,level of df2 and add those columns to df1 and then use:
rslt= pd.merge(df1,df2,on=["latitude","level","longitude"],how="left")
but this only gets nearest member, not smooth, interpolated value over above dimensions.
Any help in resolving this is appreciated.