Pandas数据框转Excel出现“文件未以UTF-8编码”错误。

6

我正在处理列表并希望将其导出到Excel文件。

我发现很多人建议使用pandas.dataframe,于是我就这样做了。我能够创建数据框架,但当我尝试将其导出到Excel时,文件为空,只有以下消息:

"错误![文件路径]没有UTF-8编码。保存被禁用。有关更多详细信息,请参见控制台。"

我没有在控制台上看到更多信息,并且我在互联网上找到的所有示例都会导致相同的错误消息。

我使用的不同列表包含不同类型的数据。因此,我尝试将每个元素转换为UTF-8编码元素。我无法对“float”列表或“NoType”列表进行此操作。

之后,我写下了以下内容:

d = {'Dataset_name': dataset_names, 'Parameter_name': para_names, 'Parameter_amount': para_amounts, 'Parameter_unit': para_units, 'Parameter_variable': para_variables, 'Parameter_formula': para_formulas}
df = pd.DataFrame(data=d)

from pandas import ExcelWriter
writer = ExcelWriter('Ocelot_Export.xlsx')
df.to_excel(writer, encoding='utf8', index=False)
writer.save()

数据框正确,因为我可以在Jupyter Notebook中打印它。唯一的问题是导出。如果您对问题有任何想法,请告诉我。

2
如果您创建一个最小、完整和可验证的示例,您将获得更多和更好的答案。特别是要确保输入和期望的测试数据是完整的(不是伪数据),并且可以轻松地剪切和粘贴到编辑器中以允许测试提议的解决方案。 - Stephen Rauch
也许是(绝对)路径包含非ASCII字符,而不是内容本身? - lenz
Stephen Rauch,我不理解你的意思。你提到的输入、期望测试数据和编辑器是什么? Ienz,我正在使用Jupyter笔记本工作,创建的Excel文件被发送到Jupyter笔记本内的文件夹中。您认为这会有问题吗? - STL
2个回答

13
这个问题的原因很可能是jupyter无法显示.xlsx文件。尝试从jupyter下载该文件(文件名旁边的复选框->页面标题附近的“下载”按钮),然后使用Excel打开它。
2020更新:如果您正在使用Jupyter Lab,jupyterlab-spreadsheet是在浏览器中查看Excel文件的好方法。

是的,确实如此。 - 27px

0
pandas documentation中的df.to_excel函数显示您没有指定编码的参数。因此,您可以尝试使用df.to_csv函数,并像下面这样指定utf8编码:
dataframe.to_csv(csv_buffer, encoding = 'utf8', index = False)

另外,我注意到你可以升级你的pandas版本,这样就可以像this thread中提到的那样指定编码参数。

这将会生成一个CSV文件,而不是一个正式的Excel文件。对于许多情况来说,这种方式更好得多;但这并不是OP所要求的。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接