我是靠谱客的博主 清新仙人掌,最近开发中收集的这篇文章主要介绍python时间数据合并_python – Pandas:合并确切的ID和最近的日期,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我正在尝试在两列上合并两个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和最近的日期所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部