PANDAS & glob - 无法确定 Excel 文件格式,您必须手动指定引擎?
代码可以正常运行,但是会出现有以下错误:
Excel file format cannot be determined, you must specify an engine manually.
下面是我的代码和操作流程:
1- 列表中客户列的ID:
customer_id = ["ID","customer_id","consumer_number","cus_id","client_ID"]
2- 在文件夹中查找所有 xlsx 文件并读取它们的代码:
l = [] #use a list and concat later, faster than append in the loopfor f in glob.glob("./*.xlsx"):
df = pd.read_excel(f).reindex(columns=customer_id).dropna(how='all', axis=1)
df.columns = ["ID"] # to have only one column once concat
l.append(df)
all_data = pd.concat(l, ignore_index=True) # concat all data
我添加了引擎 openpyxl
df = pd.read_excel(f, engine="openpyxl").reindex(columns = customer_id).dropna(how='all', axis=1)
新的错误提示:
BadZipFile: File is not a zip file
pandas 版本:1.3.0
python 版本:python3.9
操作系统:MacOS
有没有更好的方法从文件夹中读取所有 xlsx 文件?
原文由 MTALY 发布,翻译遵循 CC BY-SA 4.0 许可协议
回答:
当一个 excel 文件被 MS excel 打开时,一个隐藏的临时文件会在同一目录中创建:
~$datasheet.xlsx
因此,当运行代码以从文件夹中读取所有文件时,会出现错误:
Excel file format cannot be determined, you must specify an engine manually.
当所有文件都关闭并且 没有隐藏的临时文件 ~$filename.xlsx 在同一目录中时,代码可以完美运行。
原文由 MTALY 发布,翻译遵循 CC BY-SA 4.0 许可协议
回答:
请先确保使用的是正确的 pd.read_*
方法。我在使用 read_excel()
而不是 read_csv()
打开 .csv
文件时也遇到了这个错误。在 这里 找到了这个方便的代码片段,可以根据 Excel 文件类型自动选择正确的方法。
if file_extension == 'xlsx': df = pd.read_excel(file.read(), engine='openpyxl')
elif file_extension == 'xls':
df = pd.read_excel(file.read())
elif file_extension == 'csv':
df = pd.read_csv(file.read())
原文由 pirateofebay 发布,翻译遵循 CC BY-SA 4.0 许可协议
以上是 PANDAS & glob - 无法确定 Excel 文件格式,您必须手动指定引擎? 的全部内容, 来源链接: utcz.com/p/938665.html