【发布时间】:2021-02-04 19:13:59
【问题描述】:
我有两个 Pandas DataFrames 并希望将它们合并到两个属性 key 和 date,其中 date 是日期时间,如果第二个表的日期为 +-7 天,则应合并两行接近第一个表中的日期。
目前,我先合并数据框,然后再选择匹配的行,但这很慢并且会导致中间表很大:
res = pd.merge(left, right, on=['key'], how='inner')
mask = (
((res['date_x'] + pd.Timedelta(0, 'days')) <= (res['date_y'] + pd.Timedelta(7, 'days'))) &
((res['date_x'] - pd.Timedelta(0, 'days')) >= (res['date_y'] - pd.Timedelta(7, 'days')))
)
res = res.loc[mask]
有没有更快的方法来达到相同的结果,比如条件合并?
【问题讨论】:
标签: pandas dataframe datetime merge