我想在+/-7天内根据唯一编号和日期匹配合并两个数据帧
df1
Number Report DateDone
1 some words 13/1/2021
1 more stuff 21/8/2021
44 balbla 11/4/2020
2 gobbledy bla 01/03/2019
44 rara rasputin 13/10/2021
44 tree frogs 11/10/2010
df2
Number Report DateDone
1 hocum poklum 11/1/2021
1 mjimmeny cricket 21/8/2021
44 it wasnt me 11/2/2020
2 its not really 6/03/2019
44 im innocent 12/10/2021
44 bullfrogs 11/01/2010
Number.df1 Report.df1 DateDone.df1 Number.df2 Report.df2 DateDone.df2
1 some words 13/1/2021 1 hocum poklum 11/1/2021
1 more stuff 21/8/2021 1 jimmeny cricket 21/8/2021
2 gobbledy bla 01/03/2019 2 its not really 6/03/2019
44 rara rasputin 13/10/2021 44 im innocent 12/10/2021
我打算使用一个类似于我发现的here的sql合并,但我很难知道如何在数字和日期范围上进行合并。我是否需要计算df1中完成日期前后的7天?肯定有比必须先计算两个新列更有效的方法吗
qry = '''
select
df1.DateDone_start TermStart,
df1.DateDone_end TermEnd,
df2.DateDone df2Start,
df1.Number,
df2.Number
from
df1 join df2 on
date between df1.DateDone_start and df1.DateDone_end join df1 on
df1.Number = df2.Number
'''
df = pd.read_sql_query(qry, conn)
尝试^{} 然后筛选出7天内的行:
new_df
:将两个帧的“DateDone”转换为DateTime(如果尚未完成):
获取两个日期时间之间的持续时间
应用
abs
删除持续时间的方向性,并与所需持续时间进行比较:使用此索引确定要保留的行:
您可以在} ,然后使用^{} 过滤条件,其中} {}+/-7天,使用+/-
Number
上使用^{DateDone.df2
是^{pd.DateOffset(days=7)
,如下所示:结果:
相关问题 更多 >
编程相关推荐