使用pandas python将vlookup公式添加到列而不循环遍历行

时间:2018-06-13 14:26:50

标签: python excel pandas

是否可以使用pandas python将VLOOKUP公式添加到列中而不使用for循环遍历每一行?

这是我所拥有的循环,但在包含超过60,000行的Excel文件上有点慢

for i, row in df1.iterrows():
    df1.loc[i, 'OutcomeGroupCodeName'] = "=VLOOKUP(N" + str(i + 2) + ",OUTCOMES!A:O,3,FALSE)"

用于vlookup的ID是Excel工作表中每行的N列。这相当于打开Excel并将其添加到单元格中,即

=VLOOKUP(N2,OUTCOMES!A:O,3,FALSE)
=VLOOKUP(N3,OUTCOMES!A:O,3,FALSE)

我知道你可以使用pandas来连接与VLOOKUP相同的数据,但是我需要pandas写的最终Excel文件中的公式,这样如果稍后在导出的Excel工作表中更改了值,它将自动应用VLOOKUP。因此,在保存到Excel之前在pandas中应用merge / VLOOKUP对我来说不起作用。

这会将公式写入列中的每个单元格,但我不知道如何将索引/行号添加到字符串的一部分

df1['OutcomeGroupCodeName'] = "=VLOOKUP(N,OUTCOMES!A:O,3,FALSE)"

1 个答案:

答案 0 :(得分:0)

使用.apply可以解决此问题

df.apply(lambda row: "=VLOOKUP(N{},OUTCOMES!A:O,3,FALSE)".format(row.name), axis=1)