由于数字格式为文本,将 Excel 文件读取到 Python 失败
Posted
技术标签:
【中文标题】由于数字格式为文本,将 Excel 文件读取到 Python 失败【英文标题】:Reading Excel file to Python fails due to number formatted as text 【发布时间】:2018-06-17 19:44:34 【问题描述】:我有大量的 Excel 文件,每个文件都有一列,其中数字被格式化为文本。 Excel 给出错误“此单元格中的数字被格式化为文本或前面带有撇号” - 请参阅第三列,其中单元格有一个绿色三角形。
我的目标是在 Pandas 中打开所有这些文件而无需手动打开每个文件并将列转换为数字。但是,pd.read_excel() 失败并出现以下xlrd
错误:
XLRDError: ZIP file contents not a known type of workbook
不出所料,当我直接使用 xlrd
时:wb = xlrd.open_workbook(filename)
我得到了同样的错误。
我也试过 openpyxl:wb = openpyxl.load_workbook(filename)
,它给了我这个:
KeyError: "There is no item named 'xl/_rels/workbook.xml.rels' in the archive"
如果我在 excel 中手动将列转换为数字并重新保存工作簿,我确认该文件可由 pandas (xlrd) 和 openpyxl 打开。
有人有什么想法吗?
【问题讨论】:
您有机会上传样本吗?我正在尝试产生同样的错误,但没有完全理解。 在将 excel 读入数据框时,您基本上必须使用“转换器”。阅读文档 (pandas.pydata.org/pandas-docs/stable/generated/…) 的问题似乎与之前的帖子非常相似。 (***.com/questions/32591466/…)。 值得注意的是该文件无效,因为它缺少工作簿关系文件。 【参考方案1】:在阅读 excel 时使用“转换器”。Docs。 例如:
df = pd.read_excel('yourfile.xlsx',sheetname='sheetname',header=0,converters= "% Chg" : str )
【讨论】:
以上是关于由于数字格式为文本,将 Excel 文件读取到 Python 失败的主要内容,如果未能解决你的问题,请参考以下文章
XLSX.js读取excel日期格式时 将数字转换为正常日期格式