Python 字符串包含并替换
我有以下数据帧Python 字符串包含并替换,python,string,pandas,text,contains,Python,String,Pandas,Text,Contains,我有以下数据帧 A B 0 France United States of America 1 Italie France 2 United Stats Italy 我正在寻找一个函数,该函数可以(对于a列中的每个单词)获取前4个字母,然后在B列中搜索这4个字母是否存在。如果是这种情况,我想用B中类似的值(类似的前4个字母)替换A中的值 例如:对于A列中的斜体字,我必须取Ital,然
A B
0 France United States of America
1 Italie France
2 United Stats Italy
我正在寻找一个函数,该函数可以(对于a
列中的每个单词)获取前4个字母,然后在B列中搜索这4个字母是否存在。如果是这种情况,我想用B
中类似的值(类似的前4个字母)替换A中的值
例如:对于A
列中的斜体字,我必须取Ital
,然后在B
中搜索是否可以找到它。然后我想用类似的单词意大利语
替换意大利语
我已经尝试使用str.contains
函数为
执行
但仍然不能只接受前4个字母
预期产出:
A B
0 France United States of America
1 Italy France
2 United Stats of America Italy
为了总结,我希望将A列中的值更正为与b列中的值类似的值,即模糊匹配的解决方案--fuzzyfuzzy
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)
首先需要模糊匹配,然后使用mapWow,你的fuzzyreturn函数工作得非常好,我不得不说我不完全理解它是如何工作的,我很快搜索了fuzzyfuzzy.process.extract,但我不理解[0][0][0]@Math的意义只需在没有0的情况下拉出结果你就会明白为什么我需要那么多0和[]