条件连接大熊猫数据框

时间:2021-07-31 11:16:29

标签: python pandas dataframe

我有 2 个 Pandas 数据帧,每个数据帧超过 20K 行。

DF 1

index  Number   From_Date    To_Date
 0      1212     05/03/21    05/05/21
 1      1213     05/04/21    05/09/21
 2      1213     05/08/21    05/12/21
 3      1215     05/13/21    05/15/21
 4      1216     05/16/21    05/23/21
  

DF 2

index  Number    Date        Delivered
 0      1212     05/04/21    True
 1      1213     05/05/21    True
 2      1214     05/07/21    False
 3      1212     05/19/21    True
 4      1216     05/30/21    True
  

现在我想在 DF1 Delivered 中添加新列,如果来自 DF1 的数字存在于 DF2 中并且日期介于 From_Date 和 To_Date 之间。 我曾尝试使用 DF apply 和 Looping through DF and Filtering out row from DF2 in the loop 但它需要大约 2 分钟才能完成。 我想要一个快速而干净的方法。

预期输出

DF 1

index  Number   From_Date    To_Date     Delivered
 0      1212     05/03/21    05/05/21     Yes
 1      1213     05/04/21    05/09/21     Yes
 2      1213     05/08/21    05/12/21     No 
 3      1215     05/13/21    05/15/21     No
 4      1216     05/16/21    05/23/21     No 

1 个答案:

答案 0 :(得分:1)

df = df1.merge(df2, how = 'inner', left_on = 'Number', right_on = 'Number')
df['Delivered'] = (df['Date'] >= df['From_Date']) & (df['Date'] <= df['To_Date'])

如果这仍然需要很长时间,请考虑使用 pySpark 而不是 Pandas。