Невозможно правильно декодировать акцент в pandas кадре данных - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь устроить гонку по гистограмме для Dataphile (мой канал на YouTube) с "Спортсменами по дзюдо с большинством олимпийских c медалей". Вот моя проблема: некоторые спортсмены имеют акценты в своих именах в моем наборе данных (csv), и я не могу их правильно декодировать.

Например, в моем наборе данных в строке 5, ahtlete's меня зовут "Андреас Тюльзер".

Вот мой код:

years = [str(y) for y in range(1972,2020, 4)]
sex = ["mens", "womens"]
cat = ["extra-lightweight", "lightweight", "half-lightweight", "half-middleweight", "middleweight", "half-heavyweight", "heavyweight", "open-class"]

df_results = pd.DataFrame(columns=["Athlete"] + years)

all_df = {}

for s in sex: # gets all sexes
    for c in cat: #gets all weight categories
        for y in years: # gets all years with summer olympics
            try:
                all_df[y] = pd.read_csv(r"C:\Users\joris\Coding\judo_olympics\olympics_summer_" + y + "_JUD_" + s + "-" + c +"_final_standings.csv")
                df_med = all_df[y].head(4)[["Athlete"]]
                iter_years = iter(years)
                for w in years:
                    if int(w) >= int(y):
                        df_med.insert(len(df_med.columns), w, 1)
                    else:
                        df_med.insert(len(df_med.columns), w, 0)
                df_results = df_results.append(df_med)
            except FileNotFoundError:
                pass    
df_results = df_results.groupby("Athlete").sum()

df_results.index = df_results.index.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8') # got that from the internet

Здесь , мы видим, что имя спортсмена не было правильно декодировано в вывод.

Я хотел бы просто поменять буквы с акцентом на одну и ту же букву без акцента (пример: «é» станет «e»).

Букв не должно быть из других алфавитов в моих наборах данных, только раздражающие акценты.

Пожалуйста, дайте мне знать, если у вас есть решение или вам нужна дополнительная информация из моего кода.

Спасибо!

1 Ответ

0 голосов
/ 25 марта 2020

Существует Unidecode пакета python, который вы можете использовать для этого.

pip install --user unidecode

Затем в Python:

>>> from unidecode import unidecode
>>> print(unidecode('Ölfäßchen'))
'Olfasschen'
...