I'm trying to merge between two dataframes based on three columns that have the same names: "Hour" ,"date" and "name".
dataframe1:
>>>
Timestamp date Hour name value
0 2019-06-23 07:00:00 2019-06-23 7 01A 0.033785
1 2019-06-23 08:00:00 2019-06-23 8 01A 0.049993
2 2019-06-23 09:32:00 2019-06-23 9 01A 0.132230
3 2019-06-23 07:00:00 2019-06-23 7 01B 0.141904
4 2019-06-23 08:00:00 2019-06-23 8 01B 0.163292
...
and dataframe2:
>>>
date Hour name measure1 measure2 measure3 ...
0 2019-06-23 7 01A 0.212 0.341 0.122
1 2019-06-23 8 01A 0.467 0.75 0.89
2 2019-06-23 9 01A 0.142 0.142 0.784
3 2019-06-23 7 01B 0.776 0.452 0.334
4 2019-06-23 8 01B 0.672 0.895 1.324
....
I'm trying to merge between df1 to df2 based on three columns: date, hour and time. it's important to say that there are more information in df2 than df1.This is how I'm trying to do the merge:
mrg = pd.merge(df2, df1, how='left', left_on=['Hour','date','name'], right_on = ['Hour','date','name'])
The merge works but for some reason the column "values" gets only null values, like this:
>>>
date Hour name measure1 measure2 measure3 ... values
0 2019-06-23 7 01A 0.212 0.341 0.122 Nan
1 2019-06-23 8 01A 0.467 0.75 0.89 Nan
2 2019-06-23 9 01A 0.142 0.142 0.784 Nan
3 2019-06-23 7 01B 0.776 0.452 0.334 Nan
4 2019-06-23 8 01B 0.672 0.895 1.324 Nan
....
instead of:
>>>
date Hour name measure1 measure2 measure3 ... values
0 2019-06-23 7 01A 0.212 0.341 0.122 0.033785
1 2019-06-23 8 01A 0.467 0.75 0.89 0.049993
2 2019-06-23 9 01A 0.142 0.142 0.784 0.132230
3 2019-06-23 7 01B 0.776 0.452 0.334 0.141904
4 2019-06-23 8 01B 0.672 0.895 1.324 0.163292
....
I thought maybe it failes due to different types but I have changed the columns "name", "date" and "hour" into string type.
My end goal: to join the values column from df1 to df2, based on name,hour and date columns
Edit: when I changed the method to outer it added the values but seems like for some reason it doesn'r preform the merge well. like it doesn't recognize the similar values