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