有没有一种方法可以只使用 pandas 将公式写入 .xlsx 文件,即不使用 xlsxwriter / openpyxl 等工具?
Is there a way of writing a formula to the .xlsx file just with pandas, i.e. without using tools like xlsxwriter / openpyxl?
我写了一个脚本,读取 this .xlsx file,然后创建一个列,该列是其他三个列的总和,并将所有内容保存到一个新文件中:
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")
此代码的问题在于它不会创建 formula,它只是将所有内容相加并将结果放在新创建的列中。
当我稍后在 libreoffice calc 中访问新创建的文件时
并手动修改“一月”、“二月”或“三月”中的任何数据,“总计”列中的相应数据不会更新。
我发现 可以创建公式,但它们都使用工具 xlsxwriter
。我如何在不使用此类工具的情况下在 pandas
中创建公式?
完全可行吗?
How might I create a formula in pandas without using such tools?
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 作为引擎。
我写了一个脚本,读取 this .xlsx file,然后创建一个列,该列是其他三个列的总和,并将所有内容保存到一个新文件中:
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")
此代码的问题在于它不会创建 formula,它只是将所有内容相加并将结果放在新创建的列中。
当我稍后在 libreoffice calc 中访问新创建的文件时 并手动修改“一月”、“二月”或“三月”中的任何数据,“总计”列中的相应数据不会更新。
我发现 xlsxwriter
。我如何在不使用此类工具的情况下在 pandas
中创建公式?
完全可行吗?
How might I create a formula in pandas without using such tools?
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 作为引擎。