出于某种原因,我无法将这个简单的陈述用于ñ
。它似乎可以用于其他任何事情,但不喜欢这个角色。有什么想法吗?
DF['NAME']=DF['NAME'].str.replace("ñ","n")
由于
答案 0 :(得分:7)
我假设你在这里使用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'
使用hex escape作为相关字符。
我在评论中被告知<>.str.replace
是一个大熊猫系列方法,我没有意识到。对此的答案可能类似于以下内容:
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的。
答案 1 :(得分:0)
您可以使用具有特殊字符的替换功能,以下列方式替换为您选择的其他值。
如果您的数据框是df,则必须在所有字符串列中执行此操作。在我的情况下,我正在为&#34; \ n&#34;
这样做df= df.applymap(lambda x: x.replace("\n"," "))