python-3.x - 检查数据框中的行是否大致对应
问题描述
我有一个包含摩洛哥城市名称的数据框和另一个名称相似但编码不正确的数据框。这是第一个:
>>> df[['new_regiononame']].head()
new_regiononame
0 Grand Casablanca-Settat
1 Fès-Meknès
2 Souss-Massa
3 Laayoune-Sakia El Hamra
4 Fès-Meknès
这是我想更改为第一个名称的另一个。至少他们知道一种正确阅读它的方法:
>>>X_train[['S02Q03A_Region']].head()
S02Q03A_Region
10918 Fès-Meknès
1892 Rabat-Salé-Kénitra
6671 Casablanca-Settat
4837 Marrakech-Safi
6767 Casablanca-Settat
如何检查数据框中的行是否大致对应,如果是,则逐行重X_train
命名df
?
到目前为止,我只知道如何提取其中的哪些行X_train
具有完全相同的内容df
:
X_train['S02Q03A_Region'][X_train['S02Q03A_Region'].isin(df['new_regiononame'].unique())]
解决方案
Levenshtein 距离可以在这里完成这项工作。
Levenshtein 距离通过计算将一个单词转换为另一个单词所需的单个字符编辑次数,为您提供两个单词之间的距离。您可以建立一个合理的阈值,将一个数据框列与另一列进行比较,例如:
- 如果它以相同的字符 (?)
- 如果城市名称的长度之间的差异仅是
x
字符? - 如果 Levenshtein 距离小于
y
等等等等
计算 Levenshtein 距离的代码是:
import nltk
nltk.edit_distance("Fès-Meknès", "Fès-Meknès")
输出:
4
推荐阅读
- google-api - Kubernetes 中的符号链接秘密
- powershell - 使用 powershell 将所有打印机复制到新机器
- intellij-idea - 如何在 IntelliJ 中将文件添加到版本控制?
- python - 在对 groupby 执行求和后保留输出中的列
- xml - 第 4 行第 5 列的错误:文档末尾的额外内容
- arduino - Arduino UNO GSM
- java - 如何在不知道 Java 枚举类型的情况下使用反射比较多个枚举?
- java - 如何使用 Log4j 注册额外的 PropertySource?
- windows - Windows - 批量符号链接文件和文件夹递归
- php - Codeigniter 没有更新我的数据