группировка меток и экспорт данных из Python обратно в SQL Server - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь очистить столбец, используя fuzzywuzzy, используя следующий код:

import pyodbc 
from fuzzywuzzy import fuzz

# Getting sql list
conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=USER-PC\SQLEXPRESS;'
                      'Database=AdventureWorks2014;'
                      'Trusted_Connection=yes;')
cursor = conn.cursor()
cursor.execute("SELECT top 100 Publisher FROM dbo.Publishers where publisher like '%Ebate%'")

Product_list = cursor.fetchall()

# Groups of names with Levenshtein distance > 77

Groups = list() 
for name in Product_list:
    for grp in Groups:
        if all(fuzz.ratio(name, wd) > 78 for wd in grp):
            grp.append(name)
            break
    else:
        Groups.append([name, ])

print('output Groups:', Groups)

выводит:

output Groups: [[('Ebates.com', ), ('Ebates', ), ('Ebates Inc', ), ('Ebates.com', ), ('Ebates', ), ('Ebates', ), ('Ebates', ), ('Ebates', ), ('Ebates.ca', ), ('Ebates.com', ), ('Ebates', )], [('ExtraRebates', ), ('Mr. Rebates', ), ('RebatesMe', ), ('ExtraRebates', ), ('Mr. Rebates', ), ('RebatesMe', )] ...

Будучи новичком в Python, я застрял, находя способ:

  1. Назовите каждую группу в отдельном столбце.
  2. Экспорт результатов (группировка, издатель) в новую таблицу на SQL.

Любая помощьвысоко ценится!

1 Ответ

0 голосов
/ 27 апреля 2019

Для этого вы можете просто использовать библиотеку pandas (просто выполните «pip install pandas» в своем терминале / командной строке).

Вы можете создать таблицу с одним столбцом для каждого из этих результатов и отправить эту таблицу в базу данных sql:

import pandas as pd
tableresult = pd.DataFrame(Groups).T
tableresult.to_sql('table', engine, index=False, if_exists='replace')

в вашей команде "to_sql":

  1. index = False: избегает толкания столбца индекса в вашем sql таблица
  2. if_exists = 'replace': один из способов отправить таблицу в sql

Для получения дополнительной информации вы можете проверить там .

Надеюсь, это поможет,

BR.

...