python - 将带有公式的 Pandas DataFrames 保存到 xlsx 文件
问题描述
在 Pandas DataFrame 中,我有一些带有值的“单元格”和一些需要包含 excel 公式的“单元格”。我读过我可以得到公式
link = 'HYPERLINK("#Groups!A' + str(someInt) + '"; "LINKTEXT")'
xlwt.Formula(link)
并将它们存储在数据框中。
当我尝试将我的数据框保存为 xlsx 文件时
writer = pd.ExcelWriter("pandas" + str(fileCounter) + ".xlsx", engine = "xlsxwriter")
df.to_excel(writer, sheet_name = "Paths", index = False)
# insert more sheets here
writer.save()
我得到错误:
TypeError: Unsupported type <class 'xlwt.ExcelFormula.Formula'> in write()
所以我尝试将我的公式作为字符串写入我的数据框,但 Excel 想要恢复文件内容,然后用0
's 填充所有公式单元格。
编辑:我设法让它与常规字符串一起工作,但仍然会对 xlwt 公式的解决方案感兴趣。
所以我的问题是:如何将带有公式的数据框保存到 xlsx 文件中?
解决方案
由于您使用的是 xlsxwriter,因此默认情况下会将字符串解析为公式(“strings_to_formulas:启用 worksheet.write() 方法以将字符串转换为公式。默认值为 True”),因此您可以简单地将公式指定为数据框中的字符串。
引用数据框中其他列的公式列示例:
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
writer = pd.ExcelWriter("foo.xlsx", engine="xlsxwriter")
df["product"] = None
df["product"] = (
'=INDIRECT("R[0]C[%s]", 0)+INDIRECT("R[0]C[%s]", 0)'
% (
df.columns.get_loc("col1") - df.columns.get_loc("product"),
df.columns.get_loc("col2") - df.columns.get_loc("product"),
)
)
df.to_excel(writer, index=False)
writer.save()
产生以下输出:
推荐阅读
- azure - 如何使用 Powershell -Multiple BackendPool 创建 Azure 应用程序网关
- css - 单击按钮并将光标移开后如何保持悬停效果
- scheduled-tasks - 用于 exe 的 Windows Server 2016 任务计划程序无法正常工作
- javascript - 如何在后端注册中查看电子邮件
- linux - 使用 curl linux 在 easyupload.io 上上传文件
- xampp - 本地主机 -xampp
- reactjs - 通过 useState 更改内容
- python - 将数据框行中的单词与字典的键进行比较
- html - 剪辑路径 div 上的绝对图像的一部分被切断
- amazon-s3 - 雪花返回错误“位置上的自动摄取管道数
不能大于允许的限制:50000"