Python Pandas——映射两个数据框中的值

Sam*_*Sam 1 python mapping merge vectorization pandas

我有两个数据框df1df2.

我试图找出执行的映射,对于在每一行的最好方式df1,我想搜索匹配(idtime_by_hour)中df2,然后填入相应的值df2df1

下面是df1_final我希望它最终看起来的样子。

先感谢您!

df1
Out[100]: 
  id             time_by_min        time_by_hour  value
0  a 2017-06-30 01:25:00.000 2017-06-30 02:00:00    NaN
1  a 2017-06-30 01:36:32.308 2017-06-30 02:00:00    NaN
2  a 2017-06-30 02:25:00.000 2017-06-30 03:00:00    NaN
3  a 2017-06-30 02:36:32.308 2017-06-30 03:00:00    NaN
4  b 2017-06-30 01:25:00.000 2017-06-30 02:00:00    NaN
5  b 2017-06-30 01:36:32.308 2017-06-30 02:00:00    NaN
6  b 2017-06-30 02:25:00.000 2017-06-30 03:00:00    NaN

df2
Out[101]: 
  id        time_by_hour  value
0  a 2017-06-30 02:00:00    100
1  a 2017-06-30 03:00:00    200
2  b 2017-06-30 02:00:00    150
3  b 2017-06-30 03:00:00     30
4  c 2017-06-30 02:00:00     80
5  c 2017-06-30 03:00:00    900

df1_final
Out[102]: 
  id             time_by_min        time_by_hour  value
0  a 2017-06-30 01:25:00.000 2017-06-30 02:00:00    100
1  a 2017-06-30 01:36:32.308 2017-06-30 02:00:00    100
2  a 2017-06-30 02:25:00.000 2017-06-30 03:00:00    200
3  a 2017-06-30 02:36:32.308 2017-06-30 03:00:00    200
4  b 2017-06-30 01:25:00.000 2017-06-30 02:00:00    150
5  b 2017-06-30 01:36:32.308 2017-06-30 02:00:00    150
6  b 2017-06-30 02:25:00.000 2017-06-30 03:00:00     30
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 6

你可以看看 merge

df1['value']=df1[['time_by_hour','id']].merge(df2,how='left').value
Run Code Online (Sandbox Code Playgroud)