pandas 两个不同 Dataframe 的两列之间的Levenshtein距离

eqoofvh9  于 2022-12-25  发布在  其他
关注(0)|答案(1)|浏览(154)

假设我有两个 Dataframe
Dataframe 1:
| 识别码1|名称1|
| - ------| - ------|
| 1个|胡安娜|
| 第二章|卢卡斯|
| 三个|佩德罗|
| 四个|马蒂亚斯|
Dataframe 2:
| 识别码2|名称2|
| - ------| - ------|
| 1个|胡安|
| 第二章|胡安娜|
| 三个|胡安妮塔|
| 四个|马蒂亚斯|
| 五个|马蒂亚|
| 六个|马蒂亚斯|
| 七|马蒂亚斯|
每一个都没有相同的行数。我想创建第三个 Dataframe ,将第一个 Dataframe 的每个值与第二个 Dataframe 进行比较。
Dataframe 3:
| 识别码1|名称1|姓名2|莱文施泰因|
| - ------| - ------| - ------| - ------|
| 1个|胡安娜|胡安娜|无|
| 1个|胡安娜|胡安|1个|
| 1个|胡安娜|胡安妮塔|三个|
| 第二章|卢卡斯||五个|
| 三个|佩德罗||五个|
| 四个|马蒂亚斯|马蒂亚斯|无|
| 四个|马蒂亚斯|马蒂亚|1个|
| 四个|马蒂亚斯|马蒂亚斯|1个|
有什么办法可以做到吗?
谢谢!

sulc1iza

sulc1iza1#

您可以添加一列,然后在该列上添加pd.merge

df1 = pd.DataFrame({'id1':[1,2,3, 4], 'name1':["Juan", "Lucas", "Pedro", "Matias"]})

df2 = DataFrame({'id2':[1,2,3, 4, 5, 6, 7], 'name2':["Juan", "Juana", "Juanita",  "Matias", "Matia", "Matias", "Matiaz"]})

# Column for the merge

df1["key"] = 0
df2["key"] = 0

merged_df = pd.merge(df1, df2, on='key').drop(columns=["key"])

# Now you can apply you levenshtein function

merged_df["Levenshtein"] = merged_df.apply(lambda x: levenshtein(x.name1, x.name2), axis=1)

相关问题