使用Python

时间:2018-05-31 17:32:25

标签: python pandas formula generate

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

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

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

此公式适用于Excel。

1 个答案:

答案 0 :(得分: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))