Python Merge工作,但提供空值

Python Merge工作,但提供空值,python,pandas,merge,Python,Pandas,Merge,我试图在两个数据帧之间进行合并,这两个数据帧基于三个同名列:“Hour”、“date”和“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.0

我试图在两个数据帧之间进行合并,这两个数据帧基于三个同名列:“Hour”、“date”和“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
...

和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
....
我试图基于三列在df1和df2之间进行合并:日期、小时和时间。很重要的一点是,df2中的信息比df1中的信息多。这就是我尝试进行合并的方式:

mrg = pd.merge(df2, df1,  how='left', left_on=['Hour','date','name'], right_on = ['Hour','date','name'])
合并可以工作,但出于某种原因,“values”列只获取空值,如下所示:

>>>
    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
....
而不是:

>>>
    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
....
我想可能是因为不同的类型而失败,但我已经将“name”、“date”和“hour”列更改为字符串类型

我的最终目标:根据姓名、小时和日期列,将值列从df1加入df2


编辑:当我将方法更改为outer时,它添加了值,但似乎出于某种原因,它没有很好地执行合并。就像它不识别相似的值一样

让我们试试
df=pd.merge(df1,df2,how='left',on=['date','Hour','name'])
值仍然是空的,这能回答你的问题吗?数据帧之间的数据类型是否相同?是的,它们是相同的,将它们更改为object并选中