我有以下数据框
A B
0 France United States of America
1 Italie France
2 United Stats Italy
我正在寻找一个函数,该函数可以(对于A
列中的每个单词)获取前4个字母,然后在B
列中搜索这4个字母是否存在。现在,如果是这种情况,我想用B
中类似的值(前四个字母类似)替换A中的值。
示例:对于A
列中的Italie,我必须输入Ital
,然后在B
中搜索是否可以找到它。然后,我想用与其类似的词Italie
代替Italy
。
我尝试使用for
函数
但是仍然不能只接受前4个字母。
预期输出:
str.contains
为了概括起见,我正在寻找更正A列中的值以使其类似于b列中的值
答案 0 :(得分:1)
来自模糊匹配的解决方案-fuzzywuzzy
from fuzzywuzzy import process
def fuzzyreturn(x):
return [process.extract(x, df.B.values, limit=1)][0][0][0]
df.A.apply(fuzzyreturn)
Out[608]:
0 France
1 Italy
2 United States of America
Name: A, dtype: object
df.A=df.A.apply(fuzzyreturn)