如何从列中的值中删除重音?

时间:2016-06-20 15:25:16

标签: python pandas 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 

我希望它看起来像这样:

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 

5 个答案:

答案 0 :(得分:19)

pandas方法是使用矢量化guard结合str.normalizestr.decode

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 dtypes执行此操作:

str

答案 1 :(得分:1)

这适用于Python 2.7。要转换为ASCII,您可能需要尝试:

import unicodedata

unicodedata.normalize('NFKD', u"Durrës Åland Islands").encode('ascii','ignore')
'Durres Aland Islands'

答案 2 :(得分:1)

使用 pandas系列示例

def remove_accents(a):
    return unidecode.unidecode(a.decode('utf-8'))

df['column'] = df['column'].apply(remove_accents)

在这种情况下解码asciis

答案 3 :(得分:0)

我想删除所有列名称中的所有重音符号,所以我使用了

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

答案 4 :(得分:-1)

使用此代码:

df['Country'] = df['Country'].str.replace(u"Å", "A")
df['City'] = df['City'].str.replace(u"ë", "e")

here!当然,你应该为每个特殊字符和每一列做到这一点。