В Python, как сортировать данные, содержащие акценты? - PullRequest
0 голосов
/ 07 мая 2018

Я использую sort_values ​​для сортировки данных.Фрейм данных содержит символы UTF-8 с акцентами.Вот пример:

>>> df = pd.DataFrame ( [ ['i'],['e'],['a'],['é'] ] )
>>> df.sort_values(by=[0])
   0
2  a
1  e
0  i
3  é

Как видите, «é» с ударением находится в конце, а не после «e» без акцента.

Обратите внимание, чтореальный датафрейм имеет несколько столбцов!

1 Ответ

0 голосов
/ 07 мая 2018

Это один из способов. Самое простое решение, предложенное @JonClements:

df = df.iloc[df[0].str.normalize('NFKD').argsort()]

Альтернативное длинное решение, код нормализации любезно предоставлено @ EdChum :

df = pd.DataFrame([['i'],['e'],['a'],['é']])

df = df.iloc[df[0].str.normalize('NFKD').argsort()]

# remove accents
df[1] = df[0].str.normalize('NFKD')\
             .str.encode('ascii', errors='ignore')\
             .str.decode('utf-8')

# sort by new column, then drop
df = df.sort_values(1, ascending=True)\
       .drop(1, axis=1)

print(df)

   0
2  a
1  e
3  é
0  i

...