【发布时间】:2018-08-09 23:49:46
【问题描述】:
我已经搜索和搜索。我无法完全找到像我这样的问题。我确实尝试过。
我已将 Parquet 数据读入 Pandas 数据框,并使用 .query 语句过滤数据。
import pandas as pd
import fastparquet as fp
fieldsToInclude = ['ACCURACY','STATE','LOCATION','COUNTRY_CODE']
criteria = 'ACCURACY == 1.0 or COUNTRY_CODE == "AD"'
pandaParqFile = fp.ParquetFile(fn = inputPath + "World Zip Code.parquet")
newDF = pandaParqFile.to_pandas()
dataset = newDF[fieldsToInclude]
extraction = dataset.query(criteria)
with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
print(extraction)
当它打印时,我得到 UnicodeEncodeError: 'charmap' codec can't encode error 'u\0310' in position 4174: character maps to undefined'。这是在Geany。如果我从管理员控制台打印,我会得到不同的字符和位置。我运行的是 Windows 7。数据确实包含拉丁语、德语等字符。
当我使用 .query 的其他标准将数据打印到屏幕时,我实际上看到了一些特殊字符,所以我猜它只是某些字符?我查了“u\0310”,那是某种拉丁语 i。但我可以打印其他拉丁字符。
我尝试了一些建议来尝试通过指定编码来解决此问题,但它们似乎不起作用,因为这是一个数据框。我遇到的其他问题是关于尝试打开 CSV 文件时发生的此错误。不是我在这里所经历的。
邮政编码数据只是用来学习 Pandas 的东西。将来,这个脚本会处理什么样的数据,还不得而知。我真的在寻找解决这个问题的方法,无论数据将具有什么样的字符,它都可以防止它发生。简单地删除 LOCATION 字段(所有这些特殊字符都用于此特定数据的位置)是不可行的。
有人见过吗?提前致谢。
【问题讨论】:
-
这很可能是重复的。在 SO 中搜索
[python] UnicodeEncodeError: 'charmap' codec can't encode error并获得 400 次点击,从标题相似的问题开始。所显示的数据来自特定来源这一事实是无关紧要的。这是它要去的地方。某处存在编码不匹配。 -
在 Python 3.6 中,改进了对终端的非 ascii 输出的处理。
-
正如@TerryJanReedy 所说,这可能与
pandas完全无关,因为异常是由print()表达式引起的。尝试从支持 UTF-8 的命令行运行 Python,或避免使用print()表达式(改为写入使用 UTF-8 或 UTF-16 编码打开的文件)。 -
是的,有很多结果,一个人厌倦了阅读数小时却找不到解决方案。我会尝试更新 Python。如果做不到这一点,我想我将不得不尝试找到除了打印语句之外的东西来检查输出。我使用的是 UTF-8,所以我不明白为什么会出现这样的问题。
-
虽然它是一个旧线程,但在控制台中执行 python 脚本之前会引用stackoverflow.com/a/43989185/282155 建议
export PYTHONIOENCODING=UTF-8。
标签: python pandas unicode fastparquet