Python 在日期时间条件下合并两个网球数据集
我一直在寻找我的问题的答案很长一段时间,在文档中查找,但还没有找到任何合适的答案 我试图合并两个数据集:第一个是2000-2015年网球比赛的重要统计数据,第二个是2001-2016年网球比赛的赔率和一些一般统计数据 关键的困难是:Python 在日期时间条件下合并两个网球数据集,python,python-3.x,pandas,merge,data-analysis,Python,Python 3.x,Pandas,Merge,Data Analysis,我一直在寻找我的问题的答案很长一段时间,在文档中查找,但还没有找到任何合适的答案 我试图合并两个数据集:第一个是2000-2015年网球比赛的重要统计数据,第二个是2001-2016年网球比赛的赔率和一些一般统计数据 关键的困难是: 相似比赛的名称在数据集中通常不相等,因此不可能使用它们来合并数据集 在具有重要统计信息的数据集中,只有锦标赛开始日期,而在另一个数据集中,则有每场比赛的日期。因此,一般来说,日期平等是行不通的 下面可以看到带有一些列的数据集。第一个数据集包含关于比赛的重要统计数据,
matches[['Winner', 'Loser', 'Tournament Start Date']].head()
Winner Loser Tournament Start Date
0 Dupuis A. Ilie A. 2000-05-01
1 Gonzalez F. Mamiit C. 2000-05-01
2 Srichaphan P. Lareau S. 2000-05-01
3 Siemerink J. Gimelstob J. 2000-05-01
4 Stoltenberg J. Moron A. 2000-05-01
all_bets[['Winner', 'Loser', 'Date']].head()
Winner Loser Date of Match
0 Clement A. Gaudenzi A. 2001-01-01
1 Goldstein P. Jones A. 2001-01-01
2 Haas T. Smith L. 2001-01-01
3 Henman T. Rusedski G. 2001-01-01
4 Hewitt L. Arthurs W. 2001-01-01
对我来说,准确合并数据集的最佳方法是在3个条件下*:列“赢家”、“输家”和。。。比赛日期和锦标赛开始日期之间的差异不超过14天,因为:
matches_bets = pd.merge(matches, all_bets, on=["Winner", "Loser"], how="inner")
然而,我不明白如何应用日期的不平等条件来合并数据集
在完成这项任务时,如有任何帮助,我将不胜感激
*合并数据集时使用其他列当然不是更好的选择,这就是为什么在这里看不到它们的原因。首先,将带有日期的列转换为datetime
matches['Tournament Start Date'] = pd.to_datetime(matches['Tournament Start Date'], format='%Y-%m-%d')
all_bets['Date of Match'] = pd.to_datetime(all_bets['Date of Match'], format='%Y-%m-%d')
然后你应该像以前一样合并
matches_bets = pd.merge(matches, all_bets, on=["Winner", "Loser"], how="inner")
然后通过额外的列['date_difference']应用您的条件
matches_bets['date_difference'] = matches_bets['Date of Match'] - matches_bets['Tournament Start Date']
matches_bets['KEEP_IN_PLACE'] = matches_bets['date_difference'].apply(lambda x: 1 if x.days <= 14 else 0)
matches_bets = matches_bets[matches_bets['KEEP_IN_PLACE'] == 1]
matches_bets['date_difference']=matches_bets['date of Match']-matches_bets['protocol date']
匹配下注['KEEP_IN_PLACE']=匹配下注['date_difference']。应用(lambda x:1如果x.days如果我理解正确,我认为您可以使用“赢家”和“输家”上的合并来做您正在做的事情“,那么您只需要删除那些日期大于另一个数据框日期14天的记录。您将留下的是那些满足三个条件的记录。您看过了吗?