编码参数是不是适用于 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?的主要内容,如果未能解决你的问题,请参考以下文章
需要使用 Bing API 将查询转换为 lat 和 lon,适用于某些,但不是全部