pandas 编写的 Excel 公式出错,但 Excel 栏中编写的相同公式可以正常工作
Posted
技术标签:
【中文标题】pandas 编写的 Excel 公式出错,但 Excel 栏中编写的相同公式可以正常工作【英文标题】:Error in pandas written Excel formula, but the same formula written in the Excel bar works fine 【发布时间】:2022-01-22 06:55:09 【问题描述】:我有一个公式,如果它写在 Excel 公式栏中可以正常工作,但如果我在 pandas 中键入相同的公式,它会显示此错误:
Blockquote 已删除记录:来自 /xl/worksheets/sheet1.xml 部分的公式
公式很大:
=INDEX(LINEST(FILTER(IF(ISNUMBER(E2:E1048576),E2:E1048576,""),IF(ISNUMBER(E2:E1048576),E2:E1048576,"")<>"",),FILTER(B2:B1048576,IF(ISNUMBER(E2:E1048576),E2:E1048576,"")<>"",),FALSE,TRUE),1,1)
此公式计算两个信号之间散点图的斜率,但其中一个 (Column E
) 可能包含 #N/A
值。
公式工作正常,但我找不到使用 pandas 创建 .xlsx 时它不起作用的原因。
import pandas as pd
df = pd.DataFrame()
formula = '=INDEX(LINEST(FILTER(IF(ISNUMBER(E2:E1048576),E2:E1048576,\"\"),IF(ISNUMBER(E2:E1048576),E2:E1048576,\"\")<>\"\",),FILTER(B2:B1048576,IF(ISNUMBER(E2:E1048576),E2:E1048576,\"\")<>\"\",),FALSE,TRUE),1,1)'
df[0,'formula'] = formula
df.to_excel('name.xlsx')
代码与我发布的不完全一样(显然,因为它没用),但仍然会弹出错误。
非常感谢您的帮助,也许公式语法有错误?我无法理解的是,如果我在 Excel 中输入公式,它会起作用......
【问题讨论】:
输入df.loc[0,'formula'] = formula
。您正在生成一个空数据框。
没错,我想把 .loc 放进去,你是对的,但这不是问题。
【参考方案1】:
它应该有几个附加条件:
-
您需要最新版本的 Excel,因为公式包含动态函数 (FILTER())。
您需要使用最新版本的 XlsxWriter 作为 excel 引擎才能获得对动态函数的支持。
这是一个基于你的小例子:
import pandas as pd
formula = '=INDEX(LINEST(FILTER(IF(ISNUMBER(E2:E1048576),E2:E1048576,\"\"),IF(ISNUMBER(E2:E1048576),E2:E1048576,\"\")<>\"\",),FILTER(B2:B1048576,IF(ISNUMBER(E2:E1048576),E2:E1048576,\"\")<>\"\",),FALSE,TRUE),1,1)'
df = pd.DataFrame('formula': [formula])
writer = pd.ExcelWriter('formula.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
writer.save()
这是输出:
如您所见,该函数有效(尽管由于没有任何数据可供该函数操作,因此出现计算错误)。
您也可以在添加数据框数据后添加此函数(即,如果您不想在数据框中包含公式,请参阅Working with Python Pandas and XlsxWriter 以获取有关如何执行此操作的示例.
【讨论】:
非常感谢,你拯救了我的一天!感谢您花时间回答我的问题 :)以上是关于pandas 编写的 Excel 公式出错,但 Excel 栏中编写的相同公式可以正常工作的主要内容,如果未能解决你的问题,请参考以下文章