Коэффициент нечеткого совпадения на основе двух столбцов - PullRequest
0 голосов
/ 13 июня 2019

Я использовал этот код с fuzzywuzzy для сопоставления строк, но у меня были некоторые проблемы с выводом на основе двух разных столбцов (имя и адрес)

У меня есть два файла CSV:

база данных:

ID_database  name   Address 
1            Jean   1123 street
2            Paul   145 street
3            Bob    142 street

клиент:

ID_client    CUSTOMER_NAME     Address 
1            Jen               1123 st.
2            Paul.P             145 st.

Пока это мой код, который возвращает совпадающий адрес и соотношение между адресом поля.

 from fuzzywuzzy import process
    import pandas as pd


    names_array=[]
    ratio_array=[]
    def match_names(name_universe,clients_name):
        for row in name_universe:
            x=process.extractOne(row, clients_name)
            names_array.append(x[0])
            ratio_array.append(x[1])
        return names_array,ratio_array


    df=pd.read_csv("Master.csv", encoding="ISO-8859-1")
    name_universe=df['CUSTOMER NAME'].dropna().values

    clients_df=pd.read_csv("client.csv", encoding="ISO-8859-1")
    clients_name=clients_df['name'].values
    id_code=clients_df['Customer_Code'].values

    name_match,ratio_match=match_names(name_universe,clients_name)


    df['match_universe_name']=pd.Series(name_match)
    df['names_ratio']=pd.Series(ratio_match)

    df.to_csv("database.csv")

    print(df[['CUSTOMER_NAME','match_universe_name','names_ratio']].head(10))

Я хотел бы сравнить частоту совпадения между именем и адресом, чтобы итоговый файл Excel был выглядеть следующим образом:

    ID_database  Name   Address       ID_client    Name     Address  RatioName Ratioaddress 
    1            Jean   1123 street   1            Jen     1123 st.  0.77       0.80   
    2            Paul   145 street    2            Paul.P   145 st.  0.97       0.99

    3            Bob    142 street

Как я могу изменить, чтобы получить этот вывод?

...