概述
我正在尝试在两列上合并两个Pandas数据帧.一列具有唯一标识符,可用于简单地.merge()两个数据帧.但是,第二列合并实际上会使用.merge_asof(),因为它需要找到最接近的日期,而不是确切的日期匹配.
这里有一个类似的问题:Pandas Merge on Name and Closest Date,但它在大约三年前被问及回答,而merge_asof()是一个更新的补充.
几个月前我问了类似的here问题,但解决方案只需要使用merge_asof()而不需要任何完全匹配.
为了包含一些代码,它看起来像这样:
df = pd.merge_asof(df1,df2,left_on = [‘ID’,’date_time’],right_on = [‘ID’,’date_time’])
ID将完全匹配,但date_time将“接近匹配”.
任何帮助是极大的赞赏.
最佳答案 考虑首先合并ID,然后运行
DataFrame.apply以从第一个数据帧返回最高date_time,匹配ID小于第二个数据帧的当前行date_time.
# INITIAL MERGE (CROSS-PRODUCT OF ALL ID PAIRINGS)
mdf = pd.merge(df1, df2, on=['ID'])
def f(row):
col = mdf[(mdf['ID'] == row['ID']) &
(mdf['date_time_x'] < row['date_time_y'])]['date_time_x'].max()
return col
# FILTER BY MATCHED DATES TO CONDITIONAL MAX
mdf = mdf[mdf['date_time_x'] == mdf.apply(f, axis=1)].reset_index(drop=True)
这假设您要保留df2的所有行(即右连接).只需为左连接翻转_x / _y后缀即可.
最后
以上就是清新仙人掌为你收集整理的python时间数据合并_python – Pandas:合并确切的ID和最近的日期的全部内容,希望文章能够帮你解决python时间数据合并_python – Pandas:合并确切的ID和最近的日期所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复