0

我已经搜索和搜索。我无法完全找到像我这样的问题。我确实尝试过。

我已将 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 字段,这是所有这些特殊字符用于此特定数据的位置,是不可行的。

有没有人见过这个?提前致谢。

4

1 回答 1

0

您需要指定 utf-8 作为编码格式。

尝试:

使用 pd.option_context('display.encoding', 'UTF-8', 'display.max_rows', 100, 'display.max_columns', 10): 打印(提取)

于 2018-10-10T14:59:25.350 回答