Как убрать все возможные акценты из колонки в python - PullRequest
0 голосов
/ 12 июня 2018

Я новичок в питоне.У меня есть фрейм данных со столбцом с именем «Имя».Столбец содержит разные типы акцентов.Я пытаюсь убрать эти акценты.Например, rubén => ruben, zuñiga = zuniga и т. Д. Я написал следующий код:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import re
import unicodedata


data=pd.read_csv('transactions.csv')

data.head()

nm=data['Name']
normal = unicodedata.normalize('NFKD', nm).encode('ASCII', 'ignore')

Я получаю сообщение об ошибке:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-41-1410866bc2c5> in <module>()
      1 nm=data['Name']
----> 2 normal = unicodedata.normalize('NFKD', nm).encode('ASCII', 'ignore')

TypeError: normalize() argument 2 must be unicode, not Series

Любая помощь будет высоко оценена.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Попробуйте это для одного столбца:

nm = nm.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8')

Попробуйте это для нескольких столбцов:

obj_cols = data.select_dtypes(include=['O']).columns
data.loc[obj_cols] = data.loc[obj_cols].apply(lambda x: x.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8'))
0 голосов
/ 12 июня 2018

Причина, по которой он выдает эту ошибку, заключается в том, что для нормализации требуется строка для второго параметра, а не список строк.Я нашел пример этого онлайн:

unicodedata.normalize('NFKD', u"Durrës Åland Islands").encode('ascii','ignore')
'Durres Aland Islands'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...