使用Difflib合并Excel工作表

我一直在试图根据自己的名称列合并两个Excel表。 我用这个作为参考。

在df1中,名称列是Local Customer df2,名称列是Client

 import difflib import pandas as pd path= 'C:/Users/Rukgo/Desktop/Match thing/' df1=pd.read_excel(path+'2015_TXNs.xls') df2=pd.read_excel(path+'Pipeline.xls') df2['Client'] = df2['Client'].apply(lambda x: difflib.get_close_matches(x, df1['Local Customer'])[0]) result = df1.join(df2) result.to_excel(path+'maybe.xls') 

虽然当我运行这个我得到一个以下错误:

 File "C:/Users/Rukgo/Desktop/Match Things/untitled3.py", line 16, in <lambda> df2['Client'] = df2['Client'].apply(lambda x: difflib.get_close_matches(x, df1['Local Customer'])[0]) IndexError: list index out of range 

这意味着有时候,没有find近似匹配,但是你要求空列表的第一个元素[0]

给你的lambda函数添加一个条件来testing是否至less有一个结果。

如果您决定在没有匹配元素的情况下保留原始DataFrame的元素,则代码如下。

 def replacement(x, **kwargs): matches = difflib.get_close_matches(x, kwargs['l']) if ( matches ): return matches[0] else: return x df2['Client'] = df2['Client'].apply( replacement(x, l=df1['Local Customer'] ) ) 
Interesting Posts