Удалить акценты при сравнении файлов Excel, используя python - PullRequest
0 голосов
/ 03 февраля 2020

Я хочу сравнить два файла Excel и удалить строки с общими именами во втором файле. проблема в том, что в одном списке нет акцентов, а в другом. Я хочу удалить акценты, чтобы сравнить имена, удалить из второго файла, а затем объединить два файла. спасибо!

код пока

import pandas as pd
from unidecode import unidecode

df0 = pd.ExcelFile('Players.xlsx').parse('Sheet1')
df1 = pd.ExcelFile('Players.xlsx').parse('Sheet1')

result = df0[df0[(unidecode('Name'))].isin(df1[unidecode('Name')])]
result.to_excel('Merged.xlsx', index=False)

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Как указано в комментариях Corentin, вы хотите удалить акценты из вашего второго файла Excel.

from unidecode import unidecode
df1["Name"] = df1["Name"].apply(unidecode)  # strip accents from Name column
result = df1[~df1["Name"].str.isin(df0["Name"].unique())]  # keep only if name not in df0

Обратите внимание, что:
- Оператор ~ эквивалентен логическому НЕ оператор.
- использование df0.Name.unique() позволяет искать только по уникальным (то есть отличным) значениям имени в df0.

0 голосов
/ 03 февраля 2020

Вы можете нормализовать строки с помощью ударений, используя unicodedata.normalize

Код:

import unicodedata
my_str = 'àbćdë'
str(unicodedata.normalize('NFKD', s).encode('ascii', 'ignore'), 'utf-8')

Вывод:

'abcde'

Для применения к DataFrame используйте:

def normalize(s):
    return str(unicodedata.normalize('NFKD', s).encode('ascii', 'ignore'), 'utf-8')

df1.Name.apply(normalize)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...