Pandas 字符串包含并替换
Pandas string contains and replace
我有以下数据框
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
中搜索是否可以找到它。然后我想用它的相似词 Italy
.
替换 Italie
我试过 for
和 str.contains
函数
但还是不能只取前4个字母。
预期输出:
A B
0 France United States of America
1 Italy France
2 United Stats of America Italy
为了总结,我正在寻找 A 列中的更正值,使其与 b 列中的值相似
模糊匹配的解决方案--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)
我有以下数据框
A B
0 France United States of America
1 Italie France
2 United Stats Italy
我正在寻找一个函数,它可以获取(对于 A
列中的每个单词)前 4 个字母,然后在 B
列中搜索这 4 个字母是否存在。现在,如果是这种情况,我想用 B
.
示例:对于 A
列中的意大利一词,我必须取 Ital
然后在 B
中搜索是否可以找到它。然后我想用它的相似词 Italy
.
Italie
我试过 for
和 str.contains
函数
但还是不能只取前4个字母。
预期输出:
A B
0 France United States of America
1 Italy France
2 United Stats of America Italy
为了总结,我正在寻找 A 列中的更正值,使其与 b 列中的值相似
模糊匹配的解决方案--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)