【问题标题】:Writing sequence of formulas to Excel with Python使用 Python 将公式序列写入 Excel
【发布时间】:2018-05-31 17:32:25
【问题描述】:

我正在处理一些 excel 文件,将它们合并以计算余额。因为在脚本完成后可能需要进行一些更改,所以我更喜欢平衡公式而不是计算的余额金额(这已经有效)。所以我需要python来创建我将放入pandas列并用新列替换旧列的公式。现在我不明白如何生成以下内容:

=IF(Q3="some text",W2,W2+U3))

=IF(Q4="some text",W3,W3+U4))

此公式适用于 Excel。

【问题讨论】:

  • 你是说你想要一列用字符串表示的公式?

标签: python pandas formula generate


【解决方案1】:

您可以定义一个函数,该函数接受一个索引并返回一个表示公式的字符串。一种方法是使用str.format,如下所示:

import pandas as pd

df = pd.DataFrame(np.random.rand(10, 4))
df.columns = [c for c in "ABCD"]


def i2str(i):
    return '=IF(A{1}="some text",B{0},C{0}+D{1}))'.format(i, i + 1)


df["E"] = (df.index + 1).map(i2str)

          # A         B         C         D                                  E
# 0  0.076411  0.200761  0.309738  0.088941      =IF(A2="some text",B1,C1+D2))
# 1  0.336796  0.721301  0.037390  0.816526      =IF(A3="some text",B2,C2+D3))
# 2  0.595759  0.909850  0.242617  0.590498      =IF(A4="some text",B3,C3+D4))
# 3  0.966616  0.005933  0.866219  0.416781      =IF(A5="some text",B4,C4+D5))
# 4  0.554771  0.804761  0.086853  0.641952      =IF(A6="some text",B5,C5+D6))
# 5  0.908722  0.042198  0.930092  0.327798      =IF(A7="some text",B6,C6+D7))
# 6  0.156592  0.402616  0.748740  0.601990      =IF(A8="some text",B7,C7+D8))
# 7  0.671168  0.239831  0.744886  0.497128      =IF(A9="some text",B8,C8+D9))
# 8  0.017318  0.773414  0.133034  0.167445    =IF(A10="some text",B9,C9+D10))
# 9  0.954062  0.849017  0.732924  0.310983  =IF(A11="some text",B10,C10+D11))

【讨论】:

  • 谢谢!这看起来非常符合我的目标。给我一点时间来理解它并将其翻译成我的脚本。如果我可以让它工作,我会告诉你的。
  • Excel 不接受新输入并将其删除。当我将新框架打印到屏幕上时,我可以看到公式并根据需要更改它们。谢谢你。不知道为什么 Excel 将其视为错误输入。
猜你喜欢
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多