我需要:
- 在DF1上迭代,并针对每一行
- 将一列值与DF2中的列值匹配
- 对于每个记录匹配,在另一个表中找到
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.merge
与left
或任何其他组合都不起作用,因为它生成了很多重复项,我无法删除这些重复项,因为我将从各种不必唯一的匹配中删除有效的重复项。
在同一个MPBR的第一次匹配时,启动器需要获取CODE并用该值更新DF1['CODE']。如何加快速度?
我实际上已经用提取了DF2
中MBR
的唯一值
DF2= DF2.drop_duplicates(subset=['MBR'])
与第二名的CCD_ 6汇合。
DF3 = pd.merge(DF1,DF2[['MBR','CODE']],on='MBR', how='left')