Python pandas difflib抛出; “列表索引超出范围”错误

时间:2016-04-11 19:36:46

标签: python pandas

为什么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中的值是关闭的 - 但是我不希望它像它那样出错,我希望它根本不匹配。

1 个答案:

答案 0 :(得分:0)

get_close_matches 根本不匹配 - difflib.get_close_matches返回的列表为空,然后您尝试访问它的第一个元素,这会抛出{{1 }}

如果你想替换一个与IndexError没有匹配的元素,你可以使用这个代码,它利用了一个空列表是假的,用None替换一个假值:

None