【问题标题】:compare 2 dataframes simultaneously - 2 itertuples?同时比较 2 个数据帧 - 2 个迭代?
【发布时间】:2022-01-15 10:10:55
【问题描述】:

我正在比较 2 个数据帧,我想查看名称是否与地址匹配,然后提取唯一 ID。否则,继续并搜索最佳匹配。 (我为那部分使用模糊匹配器)

我正在探索 itertools,想知道使用 itertools.zip_longest 选项是否可以同时比较 2 个项目。而不是使用 2 个 for 循环(例如 x in df1.itertuples: do something... for y in df2.itertuples: do something)会这样吗?

result = itertools.zip_longest(df1.itertuples(), df2.itertuples())

这是我的 2 个数据框 -

Here's my DF1:

         NAME          ADDRESS       CUSTOMER_SUPPLIER_NUMBER      Sales  Calls  Target
0        OFFICE 1        123 road               2222277            84    170     265
1        OFFICE 2        15  lane               2222289            7     167     288
2        OFFICE 3        3 highway              1111111            1       2     286
3        OFFICE 4        2 street               1111171            95    193    299
4        OFFICE 5        1 place                1111191            9     193    298
DF2:
             NAME       ADDRESS        CUSTOMER_SUPPLIER_NUMBER          UNIQUE ID     
0        OFFICE 1        123 road             2222277                       014168     
1        OFFICE 2        15 lane              2222289                       131989          
2        OFFICE 3        3 highway            1111111                       149863            
3        OFFICE 4        2 street             1111171                       198664        
4        OFFICE 5        1 place             1111191                        198499
5        OFFICE 6        zzzz rd              165198                        198791
6        OFFICE 7        5z st                 19844                        298791      
7        OFFICE 8        34 hwy               981818                        398791
8        OFFICE 9        81290 rd             899811                        498791
9        OFFICE 10        59 rd               699161                        598791
10      OFFICE  11        5141 bldvd          33211                         698791

然后执行一个 for 循环并做一些比较 if 语句。我可以并排访问这两个项目,但是我将如何循环访问这些项目以进行检查?

现在我得到:“ TypeError: 'NoneType' 对象不可下标"

for yy in  result:
     if yy[0][1]== yy[1][1]:
         print(yy) ......

【问题讨论】:

    标签: python pandas dataframe loops itertools


    【解决方案1】:

    如果两个 df 中的标题相同,只需应用合并:

    dfmerge=pd.merge(df1,df2)
    

    输出应该是:

    【讨论】:

      猜你喜欢
      • 2022-09-29
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多