[英]Python pandas - How do I merge two data frames based on dates that are not consistent in both?
我目前有两个非常大的数据集:
df1 :
created_at PM1.0_CF1_ug/m3 ... PM2.5_ATM_ug/m3 Unnamed: 9
0 2019-08-08 18:00:00+00:00 4.46 ... 8.78 NaN
1 2019-08-08 19:00:00+00:00 0.00 ... 0.00 NaN
df2 :
created_at REF
0 2019-08-08 17:00:00+00:00 1.08
1 2019-08-08 18:00:00+00:00 84.31
并非df1中给出的所有created_at
值都出现在df2中,这是一个比第一个更小的数据框。
我想做的是根据df2中给出的created_at
值合并/加入两个表,并在合并表中有一个REF
列,该列仅显示在最初在df2中的日期上。
这是我想要的一个例子:
created_at PM1.0_CF1_ug/m3 ... PM2.5_ATM_ug/m3 Unnamed: 9 REF
0 2019-08-08 18:00:00+00:00 4.46 ... 8.78 NaN 84.31
1 2019-08-08 19:00:00+00:00 0.00 ... 0.00 NaN NaN
也许可以在 SQL 中执行此操作,然后将其转换为 pandas DF,但是我熟悉 SQL 连接。
谢谢!
您应该查看pd.merge_asof
并指定容差。 或者,仅合并日期而不是日期时间。
在 SQL 中,您通常会使用left join
来选择从df2
中引入匹配的行:
select df1.*, df2.ref
from df1
left join df2 on df2.created_at = df1.created_at
当df2
中没有匹配项时,列ref
将在结果集中显示为null
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.