pandas - 使用将csv数据读入熊猫时如何用类似的“英文字母”字符替换特殊字符?
问题描述
encoding='latin1'
我已经使用因为UTF-8
导致错误将 csv 导入到 pandas 数据框。数据导入没有错误,但我最终会使用?
字符而不是更有意义的替换
如何使用更准确的替换字符清理导入的数据?例如,字符串'Mořic'
,'Mo?ic'
而不是'Moric'
当我使用时pd.read_csv('data.csv',delimiter=',',encoding='latin1')
使用这篇文章我设法得到
import unicodedata
#this also works with 'niña'
example = 'Mořic'
nfd_example = unicodedata.normalize("NFD", str(example))
print('original: ',nfd_example)
print('cleaned: ',nfd_example.encode('latin1', 'ignore'))
出去:
original: Mořic
cleaned: b'Moric'
因此,我尝试使用此答案中代码的改编版本将其应用于我的数据集,以提供:
with open('data.csv', 'r', encoding='latin1') as f, open('data-fixed.csv', 'wb') as g:
content = unicodedata.normalize("NFD",f.read())
g.write(content.encode('latin1','ignore'))
df = pd.read_csv('data-fixed.csv',delimiter=',',encoding='latin1')
这适用于'niña'
as 'nina'
,但其他的,例如'Mořic'
仍然'Mo?ic'
Pandas 1.3.0 实际上有一个新功能encoding_errors
,但由于我有一个旧版本,无法使用它。因此,我试图encode('latin1','ignore')
从上面应用该方法,但不确定如何将其应用于pd.read_csv()
- 也许有更好的方法可以不使用encode()
?
解决方案
推荐阅读
- c++ - Makefile:架构 x86_64 的未定义符号
- typescript - 打字稿:如何拥有一组类型的项目
- ios - 在 iOS 中使用图像初始化时 GMVTextLineFeature 返回 null
- php - 如何将我的结果集转换为分组的多维数组,然后是 json 字符串?
- android - 是否可以使用重复的 Thread.sleep() 来创建延迟以接收短信
- visual-studio-code - 与调试器一起运行 Browsersync
- arrays - 如何检查 groovy 列表中的所有或任何元素是否满足条件
- python - 通过进程队列传递动态创建的 multiprocess.Event()
- mysql - 如何在子查询中使用第一个查询的结果
- r - 无法在 Mac 上使用 fileInput 上传多个文件