栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python基于pandas使两个表格之间匹配某一属性

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python基于pandas使两个表格之间匹配某一属性

import pandas as pd
import numpy as np
#编码距离,用于匹配最相近的中文字符串
def edit_distance(word1, word2):
    len1 = len(word1)
    len2 = len(word2)
    dp = np.zeros((len1 + 1, len2 + 1))
    for i in range(len1 + 1):
        dp[i][0] = i
    for j in range(len2 + 1):
        dp[0][j] = j

    for i in range(1, len1 + 1):
        for j in range(1, len2 + 1):
            delta = 0 if word1[i - 1] == word2[j - 1] else 1
            dp[i][j] = min(dp[i - 1][j - 1] + delta, min(dp[i - 1][j] + 1, dp[i][j - 1] + 1))
    return dp[len1][len2]


a=pd.read_csv(r'表格路径')
b=pd.read_excel(r'表格路径')
A=a['属性3'].tolist()
print(A)

Azl=a['属性1']
Arj=a['属性2']
B=b['属性3'].tolist()
count=0
for i in A:
    list1=[]
    dic1={}
    for j in B:
        distance=edit_distance(i,j)
        if distance==0:
            dic1[distance] = [i, j]
            list1.append(distance)
            break
        else:
            dic1[distance]=[i,j]
            list1.append(distance)
    Mindistance=min(list1)

    if Mindistance <= 1:
        shut=dic1[Mindistance]
        print(shut)
        Bindex=B.index(shut[1])
        Aindex=A.index(shut[0])
        shutAzl=Azl[Aindex]
        shutArj=Arj[Aindex]
        b.loc[Bindex,'属性1']=shutAzl
        b.loc[Bindex,'属性2']=shutArj
    else:
        continue
out = b.to_excel('out4.xlsx', sheet_name='sheetname', index=False)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005043.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号