gpt4 book ai didi

python - 如何替换 Pandas 数据框中拼写错误的单词

转载 作者:太空狗 更新时间:2023-10-30 02:51:16 26 4
gpt4 key购买 nike

我有 2 个 pandas DataFrame。一个包含正确拼写的单词列表:

[In]: df1
[Out]:
words
0 apple
1 phone
2 clock
3 table
4 clean

还有一个单词拼写错误:

[In]: df2
[Out]:
misspelled
0 aple
1 phn
2 alok
3 garbage
4 appl
5 pho

目标是使用第一个 DataFrame 中正确拼写的单词列表替换第二个 DataFrame 中拼写错误的单词列。第二个 DataFrame 可以有多个重复,可以与第一个 DataFrame 大小不同,可以包含第一个 DataFrame 中没有的单词(或者不够相似,无法匹配)。

我一直在尝试使用 difflib.get_close_matches 并取得了一些成功,但效果并不完美。

这是我目前所拥有的:

x = list(map(lambda x: get_close_matches(x, df1.col1), df2.col1))
good_words = list(map(''.join, x))
l = np.array(good_words, dtype='object')
df2.col1 = pd.Series(l)
df2 = df2[df2.col1 != '']

应用转换后,我应该让第二个 DataFrame 看起来像:

[In]: df2
[Out]:
0
0 apple
1 phone
2 clock
3 NaN
4 apple
5 phone

如果未找到匹配项,则该行将替换为 NaN。我的问题是我得到的结果如下所示:

[In]: df2
[Out]:
misspelled
0 apple
1 phone
2 clockclean
3 NaN
4 apple
5 phone

在撰写本文时,我还没有弄清楚为什么有些词会组合在一起。我怀疑它与 difflib.get_close_matches 匹配长度和/或字母相似的不同单词有关。到目前为止,我在整个专栏中大约有 10% - 15% 的单词像这样组合在一起。提前致谢。

最佳答案

如果想要匹配 get_close_matches 返回的第一个值,可以根据您想要的阈值调整截止参数,使用 nextiter如果不匹配可能会增加值(value) - 这里 np.nan:

x = [next(iter(x), np.nan) 
for x in map(lambda x: difflib.get_close_matches(x, df1.words, cutoff = 0.6), df2.misspelled)]
df2['col1'] = x

print (df2)
misspelled col1
0 aple apple
1 phn phone
2 alok clock
3 garbage NaN
4 appl apple
5 pho phone

关于python - 如何替换 Pandas 数据框中拼写错误的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56488402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com