我让eben尝试将state_name列与列表值匹配,它工作得很好,但是当输入数据变得区分大小写时
输入数据:
state_name
0 Assan
1 Andhra Prade5h
2 M1zoram
3 Uttar Pr8desh
4 MIZORAM
我一直在使用的脚本:
from difflib import SequenceMatcher
lst = ['Assam','Andhra Pradesh', 'Mizoram', 'Uttar Pradesh'] #Correct Name List
def closest(s):
highest = 0
result = ''
for i in lst:
temp = SequenceMatcher(None, s, i).ratio() #Similarity Ratio
if temp > highest:
highest = temp
result = i
return result
df = pd.DataFrame(['Assan','Andhra Prade5h','M1zoram','Uttar Pr8desh'], columns = ["state_name"])
df['state_name'] = df['state_name'].apply(lambda x: closest(x))
#Output After
state_name
0 Assam
1 Andhra Pradesh
2 Mizoram
3 Uttar Pradesh
4 Assam
当输入值对例如MIZORAM区分大小写时,我得到了错误的值
问题在于如何使用
SequenceMatcher
当SequenceMatcher比较两个字符串时,它会考虑字符串中字符的大小写(-小写或大写)
例如:
上面的代码显示,“Jelme”比“Hello”更接近“Hello”。 处理这个问题的一种方法是使用
str.lower()
将字符串更改为小写您可以将这两个值转换为小写:
类似的解决方案:
相关问题 更多 >
编程相关推荐