我需要在两个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
答案 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