首页 > 解决方案 > 如何根据最高匹配列映射来自另一个数据帧的值

问题描述

有 2 个数据帧,我想从另一个数据帧复制行,其中每个数据帧的一个特定列以超过 80% 的精度匹配,否则将行保留在 dataframe1 中。

我试过工作但没有得到预期的输出。需要帮助才能获得输出。以前我在使用

for index, row in df1.iterrows():
    for index2, config2 in df2.iterrows():
       if row['id_number'] == config2['identity_No']:
         ## Mapping code here 

上面的代码工作正常,但现在必须映射 df2 中的行,如果 df1 中的任何行基于row['id_number'] == config2['identity_No']匹配 df2 中的任何行,它应该附加从 df2 到 df1 的特定列值。

代码一直在使用:

for index, row in df1.iterrows():
    for index2, config2 in df2.iterrows():
        if process.extractOne(row["id_number"], config2["identity_No"])[1] >=80:
            df1['id_number'][index] = config2['identity_No']
            df1['company_name'][index] = config2['comp_name']
            df1['company_code'][index] = config2['comp_code']
            df1['score'][index] = config2['OR_Score']

但是上面的代码在我的情况下不起作用。需要建议。

标签: pythonpandasgroup-by

解决方案


推荐阅读