You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何替换Pandas DataFrame某列中的带重音字符

搞定DataFrame里的重音字符替换问题

嘿,我来帮你解决这个问题!你想把dataSwiss中Municipality列的重音字母换成普通字母,但之前的代码触发了UnicodeDecodeError,咱们一步步理清楚:

为啥会报错?

你先执行了dataSwiss['Municipality'].str.encode('utf-8'),这把原本的字符串列转换成了字节序列(bytes类型)。之后你直接在字节串上调用str.replace,Python内部会尝试把字节解码成字符串,但默认用的是ascii编码——可你的字节里包含ascii范围外的内容(比如错误里提到的0xc3),自然就解码失败报错了。

你的临时方案为啥能行?

你找到的这段代码是有效的:

s = dataSwiss['Municipality']
res = s.str.decode('utf-8')  # 把字节串重新解码回字符串类型
res = res.str.replace(u"茅", "e")  # 现在可以正常操作字符串里的重音字符

不过这里要提一句:你写的u"茅"应该是输入时的显示乱码,实际对应的应该是瑞士德语里的ü(毕竟你数据里的Z眉rich其实是Zürich对吧😉)。

更通用的批量处理方案

如果要处理所有重音字符(比如ä、ö、ü、é这些),一个个手动替换太麻烦了,咱们可以用Python的unicodedata模块来批量处理:

import unicodedata

def remove_accents(input_str):
    # 把带重音的字符分解成「普通字母+重音标记」的组合
    nfkd_form = unicodedata.normalize('NFKD', input_str)
    # 过滤掉所有重音标记,只保留普通字母
    return ''.join([c for c in nfkd_form if not unicodedata.combining(c)])

# 把这个函数应用到DataFrame的列上
dataSwiss['Municipality'] = dataSwiss['Municipality'].apply(remove_accents)

这样处理后,Zürich会直接变成Zurich,所有带重音的字符都会自动转换成对应的普通字母,比单个替换高效多了。

看看处理效果

执行完上面的代码后,你可以打印列内容确认:

print(dataSwiss['Municipality'])

输出应该是这样的:

0    Zurich
1    Zurich
2    Zurich
3    Zurich
4    Zurich
5    Zurich
6    Zurich
7    Zurich
Name: Municipality, dtype: object

内容的提问来源于stack exchange,提问作者emax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:37:39