Comment supprimer les accents des valeurs dans les colonnes?
Comment puis-je changer les caractères spéciaux pour les lettres alphabétiques habituelles? C'est mon dataframe:
In [56]: cities
Out[56]:
Table Code Country Year City Value
240 Åland Islands 2014.0 MARIEHAMN 11437.0 1
240 Åland Islands 2010.0 MARIEHAMN 5829.5 1
240 Albania 2011.0 Durrës 113249.0
240 Albania 2011.0 TIRANA 418495.0
240 Albania 2011.0 Durrës 56511.0
je veux qu'elle ressemble à ceci:
In [56]: cities
Out[56]:
Table Code Country Year City Value
240 Aland Islands 2014.0 MARIEHAMN 11437.0 1
240 Aland Islands 2010.0 MARIEHAMN 5829.5 1
240 Albania 2011.0 Durres 113249.0
240 Albania 2011.0 TIRANA 418495.0
240 Albania 2011.0 Durres 56511.0
8
demandé sur
Marius
2016-06-20 18:25:16
4 réponses
la méthode pandas est d'utiliser le vectorisé str.normalize
combinés avec str.decode
et str.encode
:
In [60]:
df['Country'].str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8')
Out[60]:
0 Aland Islands
1 Aland Islands
2 Albania
3 Albania
4 Albania
Name: Country, dtype: object
Donc le faire pour tous les str
dtypes:
In [64]:
cols = df.select_dtypes(include=[np.object]).columns
df[cols] = df[cols].apply(lambda x: x.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8'))
df
Out[64]:
Table Code Country Year City Value
0 240 Aland Islands 2014.0 MARIEHAMN 11437.0 1
1 240 Aland Islands 2010.0 MARIEHAMN 5829.5 1
2 240 Albania 2011.0 Durres 113249.0
3 240 Albania 2011.0 TIRANA 418495.0
4 240 Albania 2011.0 Durres 56511.0
13
répondu
EdChum
2016-06-20 15:39:39
Ceci est pour Python 2.7. Pour la conversion en ASCII, vous pouvez essayer:
import unicodedata
unicodedata.normalize('NFKD', u"Durrës Åland Islands").encode('ascii','ignore')
'Durres Aland Islands'
1
répondu
advance512
2016-06-20 15:29:38
pandas série exemple
def remove_accents(a):
return unidecode.unidecode(a.decode('utf-8'))
df['column'] = df['column'].apply(remove_accents)
dans ce cas décoder asciis
1
répondu
Caio Andrian
2018-01-06 14:35:23