Pandas中的Vlookup近似匹配

时间:2017-09-22 06:07:12

标签: pandas

我需要在两个pandas数据帧上进行vlookup样式操作

Excel中的Vlookup函数有一个额外的参数,无论它是否应该找到近似或完全匹配。对于完全匹配,我知道我可以使用join函数。但是,如果我找到下一个更大的值,我将如何进行近似匹配?

例如,如果我有一个标记和成绩定义数据框,如下所示:

Student Mark
John    65
Peter   75
Jason   79

Mark    Symbol
50      D
60      C  # table indicates a mark between 60 and 69 is a C symbol
70      B
80      A

我怎样才能得到这样的表格:

Student Mark    Symbol
John    65      C
Peter   75      B
Jason   79      B

1 个答案:

答案 0 :(得分:9)

使用merge_asof合并最近的密钥

In [2484]: pd.merge_asof(df1, df2, on='Mark')
Out[2484]:
  Student  Mark Symbol
0    John    65      C
1   Peter    75      B
2   Jason    79      B

详细

In [2485]: df1
Out[2485]:
  Student  Mark
0    John    65
1   Peter    75
2   Jason    79

In [2486]: df2
Out[2486]:
   Mark Symbol
0    50      D
1    60      C
2    70      B
3    80      A