【问题标题】:Pandas DataFrame to Excel ProblemsPandas DataFrame 到 Excel 问题
【发布时间】:2015-06-25 21:12:20
【问题描述】:

我正在尝试通过 Pandas Datarame 将元组列表导出到 Excel,但每次尝试运行该函数时,我都会得到:

TypeError: init() 得到了一个意外的关键字参数“engine”

元组列表类似于

[(83, 97), (34, 78), (39, 70), (60, 66), (90, 48)...]

这是我正在使用的代码:

#Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter(results, engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)

有人知道为什么会这样吗?这是缺少模块的情况吗?我在无法访问互联网的区域工作,因此无法下载/更新库。除了将元组列表轻松传递到 excel 文件之外,还有其他替代方法吗?

【问题讨论】:

  • 是否必须输出为 excel 工作簿,还是 CSV 就足够了?您可以将元组列表更改为数据框,然后很容易地输出为 csv...
  • @flyingmeatball 在这种情况下,CSV 就足够了。随着我的工具的进步,我可能希望将基于 excel 的数据格式化。

标签: python excel pandas


【解决方案1】:

在我的 CentOS 上,我遇到了同样的问题。这很容易解决

pip install xlsxwriter

(在您的系统上,您可能需要做一些不同的事情;不过,请安装此软件包)。


接着问题就变成了

AttributeError: 'list' object has no attribute 'rfind'

然而,

df.to_excel('data.xls', sheet_name='Sheet1', index=False, engine='xlsxwriter')

有效。

【讨论】:

  • 谢谢@Ami Tavory。这适用于我隔间的计算机,但由于该工具正在其他无法访问互联网的地方开发,pip 无法连接到 xlsxwriter 所在的 url。
【解决方案2】:

这取决于您拥有的 openpyxl 和 pandas 的版本,但也许 this answerthis similar question 会有所帮助。只需添加以下行:

import pandas as pd
pd.core.format.header_style = None

导入pandas时,会删除pandas中索引行和标题列硬编码的格式化字典。

更详细的讨论也在this answer。基本上,openpyxl 版本 2 弃用了将字典样式定义映射到新的 openpyxl api 的样式转换函数,但 Pandas 仍然使用旧样式,并且由于某种原因,弃用传递函数出错了。

【讨论】:

  • 这正是我所需要的!
【解决方案3】:

这适用于我使用 Pandas 14.1。

df = pd.DataFrame([(1, 2), (3, 4)])

>>> df
   0  1
0  1  2
1  3  4
file_path = '~/Downloads/test.xlsx'
df.to_excel(file_path, index=False)

我认为不需要显式设置引擎:

excel_writer : 字符串或 ExcelWriter 对象(文件路径或现有 ExcelWriter)

【讨论】:

  • 设置和控制编写器的能力是有原因的。例如,请参阅here。我不会这么快就放弃的。
猜你喜欢
  • 2022-07-20
  • 2017-06-08
  • 2017-08-25
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 2021-11-21
相关资源
最近更新 更多