我假设您在这里使用 Python 2.x,这可能是 Unicode 问题。别担心,你并不孤单——unicode 一般来说非常困难,尤其是在 Python 2 中,这就是为什么它在 Python 3 中成为标准。
如果您所关心的只是ñ
,你应该用UTF-8解码,然后只替换一个字符。
看起来像下面这样:
DF['name'] = DF['name'].str.decode('utf-8').replace(u'\xf1', 'n')
举个例子:
>>> "sureño".decode("utf-8").replace(u"\xf1", "n")
u'sureno'
如果您的字符串已经是 Unicode,那么您可以(并且实际上必须)跳过decode
step:
>>> u"sureño".replace(u"\xf1", "n")
u'sureno'
这里请注意u'\xf1'
使用十六进制转义对于有问题的角色。
Update
我在评论中得知<>.str.replace
是 pandas 系列方法,我没有意识到。这个问题的答案可能如下:
DF['name'] = map(lambda x: x.decode('utf-8').replace(u'\xf1', 'n'), DF['name'].str)
或者类似的东西,如果 pandas 对象是可迭代的。
另一个更新
实际上我只是想到您的问题可能很简单,如下所示:
DF['NAME']=DF['NAME'].str.replace(u"ñ","n")
请注意我是如何添加的u
在字符串前面,使其成为 unicode。