使用 Difflib 合并 Excel 个工作表
Using Difflib to combine Excel sheets
我一直在尝试根据它们自己的名称列将两个 excel 工作表合并在一起。我使用 this 作为参考。
在 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
这意味着有时找不到相近的匹配项,但您要求的是空列表的第一个元素 [0]
向您的 lambda 函数添加条件以测试是否至少有一个结果。
如果您决定在没有匹配元素的情况下保留原始 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'] ) )
我一直在尝试根据它们自己的名称列将两个 excel 工作表合并在一起。我使用 this 作为参考。
在 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
这意味着有时找不到相近的匹配项,但您要求的是空列表的第一个元素 [0]
向您的 lambda 函数添加条件以测试是否至少有一个结果。
如果您决定在没有匹配元素的情况下保留原始 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'] ) )