0

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

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

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

ETC

此公式适用于 Excel。

4

1 回答 1

0

您可以定义一个函数,该函数接受一个索引并返回一个表示公式的字符串。一种方法是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))
于 2018-05-31T17:48:18.573 回答