条件日期加入python Pandas

时间:2017-11-28 15:29:44

标签: python-3.x pandas join

我有两个pandas数据框matches,其中列(match_idteam_iddate,...)和teams_att列({{1} }},idteam_iddate,...)。 我想加入距离overall_rating最近的matches.team_id = teams_att.team_idteams_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

1 个答案:

答案 0 :(得分:2)

您可以将merge_asofbydirection参数一起使用:

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