我正在处理一些 excel 文件,将它们合并以计算余额。因为在脚本完成后可能需要进行一些更改,所以我更喜欢平衡公式而不是计算的余额金额(这已经有效)。所以我需要python来创建我将放入pandas列并用新列替换旧列的公式。现在我不明白如何生成以下内容:
=IF(Q3="some text",W2,W2+U3))
=IF(Q4="some text",W3,W3+U4))
ETC
此公式适用于 Excel。
您可以定义一个函数,该函数接受一个索引并返回一个表示公式的字符串。一种方法是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))