根据迭代器匹配另一个表中的值填充pandas行



我需要:

  1. 在DF1上迭代,并针对每一行
  2. 将一列值与DF2中的列值匹配
  3. 对于每个记录匹配,在另一个表中找到code,并将该代码分配给DF1
DF1['CODE'] = 'Nan'
for index,row in DF1.iterrows():
pnum= row['MPBR']
for index,row in DF2[['MPBR','CODE']].iterrows():
if row['MPBR'] == pnum:
DF1['CODE'] = row['CODE']

这段代码正在运行,但需要很长时间。我有20万排。15000排花了10分钟。

pd.mergeleft或任何其他组合都不起作用,因为它生成了很多重复项,我无法删除这些重复项,因为我将从各种不必唯一的匹配中删除有效的重复项。

在同一个MPBR的第一次匹配时,启动器需要获取CODE并用该值更新DF1['CODE']。如何加快速度?

我实际上已经用提取了DF2MBR的唯一值

DF2= DF2.drop_duplicates(subset=['MBR'])

与第二名的CCD_ 6汇合。

DF3 = pd.merge(DF1,DF2[['MBR','CODE']],on='MBR', how='left')

最新更新