5

出于某种原因,我无法让这个简单的语句在ñ. 它似乎适用于其他任何东西,但不喜欢那个角色。有任何想法吗?

DF['NAME']=DF['NAME'].str.replace("ñ","n")

谢谢

4

2 回答 2

8

我假设您在这里使用的是 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步骤:

>>> u"sureño".replace(u"\xf1", "n")
u'sureno'

请注意,此处对相关字符u'\xf1'使用十六进制转义

更新

我在评论中被告知这<>.str.replace是一种熊猫系列方法,我没有意识到。这个问题的答案可能类似于以下内容:

DF['name'] = map(lambda x: x.decode('utf-8').replace(u'\xf1', 'n'), DF['name'].str)

或者类似的东西,如果熊猫对象是可迭代的。

另一个更新

实际上我只是想到您的问题可能很简单,如下所示:

DF['NAME']=DF['NAME'].str.replace(u"ñ","n")

请注意我是如何u在字符串前面添加 unicode 的。

于 2014-05-24T05:29:32.627 回答
0

您可以通过以下方式使用具有特殊字符的替换功能替换为您选择的不同值。

如果您的数据框是 df 并且您必须在所有字符串列中执行此操作。在我的情况下,我正在为“\n”做这件事

df= df.applymap(lambda x: x.replace("\n"," "))
于 2018-06-18T17:46:53.673 回答