python - 有没有一种方法可以仅使用 pandas 将公式写入 .xlsx 文件,即不使用 xlsxwriter / openpyxl 之类的工具?
问题描述
我编写了一个脚本来读取这个 .xlsx 文件,然后创建一个列,该列是其他三个列的总和,并将所有内容保存到一个新文件中:
import pandas
df = pandas.read_excel("excel-comp-data.xlsx")
df["total"] = df["Jan"] + df["Feb"] + df["Mar"]
df.to_excel("excel-comp-data-formula-by-pandas.xlsx")
这段代码的问题是它没有创建公式,它只是将所有内容相加并将结果放在新创建的列中。
当我稍后在libreoffice calc中访问新创建的文件 并手动修改“一月”、“二月”或“三月”中的任何数据时,“总计”列中的相应数据不会得到更新。
我在 SO 上找到了一些创建公式的代码片段,但它们都使用xlsxwriter
. 我如何在pandas
不使用此类工具的情况下创建公式?
这完全可行吗?
解决方案
在不使用此类工具的情况下如何在 pandas 中创建公式?
Pandas 无论如何都使用 xlsxwriter(或 openpyxl)来创建 xlsx 文件,因此您已经在使用它们了。
无论如何,您可以添加公式,而不是静态总和,如下所示:
import pandas
df = pandas.read_excel("excel-comp-data.xlsx")
df["total"] = [f'=SUM(H{row}:J{row})' for row in range(2, df.shape[0] + 2)]
df.to_excel("excel-comp-data-formula-by-pandas.xlsx", engine='xlsxwriter')
输出:
Excel 给出了一个公式警告(绿色三角形),因为它错误地认为您也应该将 G 列添加到公式中。希望您可以忽略这一点,或者在数据框中切换列 F 和 G。
它可能也适用于 openpyxl 作为引擎。
推荐阅读
- python - 有没有办法使用 pygame 播放原始 8 位 PCM 数据?
- google-bigquery - 临时函数的 BigQuery LEFT OUT JOIN 错误?
- windows - 如何根据文件名自动创建文件夹并使用 .BAT 将文件移动到其文件夹中
- python - 如果 Scipy.spatial.distance.cdist 使用双 for 循环,为什么它会很快?
- kubernetes - 在 Windows Server 2022 上运行 .NET 容器
- python - 在 Python 3 中使用 pyobjc-framework-Quartz
- url-rewriting - OVH 的 URL 重写
- linux - Vs code 嵌入式终端奇怪的颜色
- java - 如何在eclipse中使用extends重构多个类名?
- javascript - 如果选中复选框,则汇总 HTML 表格中的单元格值