首页 > 解决方案 > 通过使用容差将两个带有日期时间的熊猫数据框与缺失数据合并

问题描述

我正在尝试将两个数据帧(df_in_A 和 df_in_B)与公共列('id'、'date')合并,但某些日期时间不匹配。我想要 df_output = df_in_A + df_in_B 的列 'data3' (与 'id' 和 'date' 匹配。如果 df_in_A 的日期时间不存在于 df_in_B => 取最后一个最接近的日期(公差 = 几天):

import pandas as pd
 
df_in_A = [
[1, '30/07/2021', 'A1', 'B1'],
[1, '31/08/2021', 'A2', 'B2'],
[1, '30/09/2021', 'A3', 'B3'],
[1, '31/10/2021', 'A4', 'B4'],
[2, '30/07/2021', 'A1', 'B1'],
[2, '31/08/2021', 'A2', 'B2'],
[2, '30/09/2021', 'A3', 'B3'],
[2, '31/10/2021', 'A4', 'B4']]

df_in_B = [
[1, '27/07/2021', 'C1'],
[1, '28/07/2021', 'C2'],
[1, '29/07/2021', 'C3'],
[1, '29/08/2021', 'C4'],
[1, '30/08/2021', 'C5'],
[1, '31/08/2021', 'C6'],
[1, '29/09/2021', 'C7'],
[1, '30/09/2021', 'C8'],
[1, '30/10/2021', 'C9'],
[2, '27/07/2021', 'C10'],
[2, '28/07/2021', 'C11'],
[2, '29/07/2021', 'C12'],
[2, '29/08/2021', 'C13'],
[2, '30/08/2021', 'C14'],
[2, '31/08/2021', 'C15'],
[2, '29/09/2021', 'C16'],
[2, '30/09/2021', 'C17'],
[2, '30/10/2021', 'C18']]

df_output = [
[1, '30/07/2021' 'A1' 'B1' 'C3'],
[1, '31/08/2021' 'A2' 'B2' 'C6'],
[1, '30/09/2021' 'A3' 'B3' 'C8'],
[1, '31/10/2021' 'A4' 'B4' 'C9'],
[2, '30/07/2021' 'A1' 'B1' 'C12'],
[2, '31/08/2021' 'A2' 'B2' 'C15'],
[2, '30/09/2021' 'A3' 'B3' 'C17'],
[2, '31/10/2021' 'A4' 'B4' 'C18']]


# Create the pandas DataFrame
df_in_A = pd.DataFrame(data_A, columns = ['id', 'date', 'data1', 'data2'])
df_in_B = pd.DataFrame(data_B, columns = ['id', 'date', 'data3'])
df_output = pd.DataFrame(data_B, columns = ['id', 'date', 'data3'])

我试过了:

标签: pandasdataframemerge

解决方案


推荐阅读