我有两个pandas数据框matches
,其中列(match_id
,team_id
,date
,...)和teams_att
列({{1} }},id
,team_id
,date
,...)。
我想加入距离overall_rating
最近的matches.team_id = teams_att.team_id
和teams_att.date
的两个数据框
实施例
匹配
matches.date
teams_att
match_id team_id date
1 101 2012-05-17
2 101 2014-07-11
3 102 2010-05-21
4 102 2017-10-24
期望的结果
id team_id date overall_rating
1 101 2010-02-22 67
2 101 2011-02-22 69
3 101 2012-02-20 73
4 101 2013-09-17 79
5 101 2014-09-10 74
6 101 2015-08-30 82
7 102 2015-03-21 42
8 102 2016-03-22 44
答案 0 :(得分:2)
您可以将merge_asof
与by
和direction
参数一起使用:
pd.merge_asof(matches.sort_values('date'),
teams_att.sort_values('date'),
on='date', by='team_id',
direction='nearest')
输出:
match_id team_id date id overall_rating
0 3 102 2010-05-21 7 42
1 1 101 2012-05-17 3 73
2 2 101 2014-07-11 5 74
3 4 102 2017-10-24 8 44