为什么difflib.get_close_matches会抛出“list index out of range”在以下示例中找不到匹配项时出错?
from pandas import DataFrame
import difflib
df1 = DataFrame([[1,'034567','Foo'],
[2,'1cd2346','Bar']],
columns=['ID','Unit','Name'])
df2 = DataFrame([['SellTEST','0ab1234567'],
['superVAR','1ab2345']],
columns=['Seller', 'Unit'])
df2['Unit'] = df2['Unit'].apply(lambda x: difflib.get_close_matches(x, df1['Unit'])[0])
df1.merge(df2)
我知道df1中的值是关闭的 - 但是我不希望它像它那样出错,我希望它根本不匹配。
答案 0 :(得分:0)
get_close_matches
根本不匹配 - difflib.get_close_matches
返回的列表为空,然后您尝试访问它的第一个元素,这会抛出{{1 }}
如果你想替换一个与IndexError
没有匹配的元素,你可以使用这个代码,它利用了一个空列表是假的,用None
替换一个假值:
None