编码参数是不是适用于 pandas.read_excel?

Posted

技术标签:

【中文标题】编码参数是不是适用于 pandas.read_excel?【英文标题】:Does the encoding parameter work for pandas.read_excel?编码参数是否适用于 pandas.read_excel? 【发布时间】:2020-10-02 00:46:57 【问题描述】:

我需要使用 pandas.read_excel 读取 .xls 文件。它们是直接从测量设备的软件中导出的吸附数据..我试过了

pd.read_excel(r'./002-197.XLS',sheet_name=0, index_col=None,encoding='ISO-8859-1', na_values=['NA'])

但它显示:

*** 没有 CODEPAGE 记录,没有 encoding_override:将使用 'ascii' Traceback(最后一次调用):

文件“D:\PPy\data analysis\file_to_rdirectory.py”,第 17 行,在 exp_info=pd.read_excel(r'./002-197.XLS',sheet_name=0, index_col=None,encoding='ISO-8859-1', na_values=['NA'])

文件 "D:\Anaconda\envs\myenv\lib\site-packages\pandas\io\excel_base.py", 第 304 行,在 read_excel 中 io = ExcelFile(io, engine=engine)

文件 "D:\Anaconda\envs\myenv\lib\site-packages\pandas\io\excel_base.py", 第 824 行,在 init 中 self._reader = self._enginesengine

文件 "D:\Anaconda\envs\myenv\lib\site-packages\pandas\io\excel_xlrd.py", 第 21 行,在 init 中 super().init(filepath_or_buffer)

文件 "D:\Anaconda\envs\myenv\lib\site-packages\pandas\io\excel_base.py", 第 353 行,在 init 中 self.book = self.load_workbook(filepath_or_buffer)

文件 "D:\Anaconda\envs\myenv\lib\site-packages\pandas\io\excel_xlrd.py", 第 36 行,在 load_workbook 中 返回 open_workbook(filepath_or_buffer)

文件 "D:\Anaconda\envs\myenv\lib\site-packages\xlrd__init__.py", 第 148 行,在 open_workbook 中 bk = book.open_workbook_xls(

文件“D:\Anaconda\envs\myenv\lib\site-packages\xlrd\book.py”,行 108,在 open_workbook_xls 中 bk.fake_globals_get_sheet()

文件“D:\Anaconda\envs\myenv\lib\site-packages\xlrd\book.py”,行 第732章 self.get_sheets()

文件“D:\Anaconda\envs\myenv\lib\site-packages\xlrd\book.py”,行 第723章 self.get_sheet(sheetno)

文件“D:\Anaconda\envs\myenv\lib\site-packages\xlrd\book.py”,行 第714章 sh.read(self)

文件“D:\Anaconda\envs\myenv\lib\site-packages\xlrd\sheet.py”,行 第1369章 strg = unpack_string(data, 7, bk.encoding or bk.derive_encoding(), lenlen=1)

文件“D:\Anaconda\envs\myenv\lib\site-packages\xlrd\biffh.py”,行 250,在 unpack_string 返回 unicode(数据[pos:pos+nchars], 编码)

文件 "D:\Anaconda\envs\myenv\lib\site-packages\xlrd\timemachine.py", 第 31 行,在 unicode = lambda b, enc: b.decode(enc)

UnicodeDecodeError: 'ascii' 编解码器无法在位置解码字节 0xb3 10:序数不在范围内(128)

我试图将这个 excel 文件中的所有数据复制到一个新创建的 excel 文件中,并且效果很好。我注意到错误报告中的第一行。

*** No CODEPAGE record, no encoding_override: will use 'ascii' Traceback (most recent call last):

该文件似乎没有代码页记录,并且不能由“ascii”编码。所以我尝试通过使用 encoding='' 和 encoding_override='' 来提供它的语法,但没有改进。谁能帮我?

【问题讨论】:

df= pd.read_csv('Your.csv', encoding='ISO-8859-1') 尝试使用 df= pd.read_csv('Your.csv', encoding='latin1' ) 谢谢。但我需要阅读 excel 而不是 .csv。 【参考方案1】:
wb = xlrd.open_workbook(path, encoding_override='CORRECT_ENCODING')
df = pd.read_excel(wb)

【讨论】:

这个会抛出错误TypeError: expected str, bytes or os.PathLike object, not Book

以上是关于编码参数是不是适用于 pandas.read_excel?的主要内容,如果未能解决你的问题,请参考以下文章

“参数列表太长”限制是不是适用于 shell 内置函数?

需要使用 Bing API 将查询转换为 lat 和 lon,适用于某些,但不是全部

Android Geocoder 是不是仅适用于互联网连接?

C 中的位移是不是仅适用于 32 位块

MATLAB 中的 GPU 编码器,用于大量面向对象的代码

是否有适用于 iOS 的离线地理编码框架、库或数据库?