从两个不同的数据帧计算两个字符串列之间的Levenshtein距离

2024-07-04 15:48:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧,它们包含相同的字符串列(主机名),我想计算两个数据帧之间所有可能的主机名对组合之间的Levenshtein距离,并将结果放入第三个数据帧中,在第三个数据帧中,我保留了每个可能组合的距离,但也保留了该组合的两个索引。在

例如,假设我有两个数据帧:

Index      Hostname
85608             dlt-rly-tracker-3.datto.com
9378      lnv7bc4241e2.1528.ozvision.ozsn.net
22791             dlt-rly-tracker-1.datto.com
88922                                 pw-file
94560     lnv7bc4241e2.1528.ozvision.ozsn.net
13245                                       -
63604                                 pw-file
435839                                pw-file
95473                                       -
13856                                 pw-file
210705                                pw-file
30046                                       -
106917            dlt-rly-tracker-2.datto.com
415925                                pw-file
170471                                pw-file
73971                                       -
86885             dlt-rly-tracker-3.datto.com
162764                                pw-file
74791                                 pw-file

第二个数据帧:

^{pr2}$

我要做的是获取hostname的第一个值(dlt-rly-tracker-3)。达图网)并使用第二个数据帧中的所有主机名值(逐个计算)计算levenshtein距离。将此过程结束时的结果存储在一个新的数据帧中,该数据帧类似于以下内容:

Indexes         Distance    Hostnames
85608-93358     23          dlt-rly-tracker-3.datto.com,device.dattobackup.com
85608-34067     60          dlt-rly-tracker-3.datto.com,dlt-rly-tracker-5.datto.com

我真的很感激能帮我解决问题。谢谢。在


Tags: 数据字符串com距离nettrackerfilelevenshtein
2条回答

下面的解决方案将遍历这两个数据帧,并使用所需数据创建一个新字典。然后你应该把这个字典转换成一个数据帧。让我知道如果这有帮助!在

 dist = {}
 for rowname, row in df.iterrows(): 
      for rowname1, row1 in df1.iterrows(): 
            L = Levenstein(row.Hostname, row1.Hostname)
            dist.update( {rowname+’-‘+rowname1 : (L, row.Hostname+’,’+row1.Hostname} )

我的建议是解决这个问题。在

import pandas as pd
from nltk import edit_distance

这里需要创建两个数据帧。我假设它们被称为:

df1型

df2型

^{pr2}$

相关问题 更多 >

    热门问题