基于2列与Pandas匹配的行合并2个数据帧

时间:2020-02-28 07:57:16

标签: python pandas dataframe merge

我有一个项目需要解决的非常重要的问题!

所以我有2个看起来像这样的数据框: 第一个数据框是:

Date            Winner      Loser         Tournament
2007-01-01      Luczak P.   Hrbaty D.     Grandslam
2007-01-02      Serra F.    Johansson J.  Grandslam
2007-01-02      ......      ......

第二个数据框是:

Date            Winner      Loser          Tournament
2007-05-28      Federer R.  Russel M.      Grandslam
2007-05-28      Ascione T.  Cilic M.       Grandslam
2007-05-28      ......      ......

即使第一个数据帧始于2007年1月1日,另一个数据帧始于2007年5月28日,两个数据帧具有相同的行数,这些行对应于来自同一时期的相同匹配项。我通过查看导入的excel文件进​​行了检查,以构建两个数据框(来自不同来源)。

问题是,一个数据框(第一个)为我提供了每场比赛的确切日期,而另一个数据框(第二个)为我将每一行的日期设置为比赛的开始时间,而不是确切的时间。因此我无法根据日期值合并两个数据框。

但是,我确定每一行的获胜者和失败者都是相同的,所以我想根据获胜者和参与者相同的行合并两个数据框

有人知道我该怎么做吗?预先感谢!

2 个答案:

答案 0 :(得分:1)

您可以通过merge_asof来做到这一点:

df = pd.merge_asof(df1.sort_values('Date'), 
                   df2.sort_values('Date'), on='Date', by=['Winner','Loser'])

答案 1 :(得分:0)

df= pd.merge(df1,df2,how='inner',left_on=['Winner','Loser'],right_on=['Winner','Loser'])
相关问题