使用for循环,跨多个pandas列运行模型,并使用模型输出创建新列

问题描述:

对于我的数据框中的4列,我想在每个列上运行一个模型,并将结果作为4列添加到原始数据帧。使用for循环,跨多个pandas列运行模型,并使用模型输出创建新列

目前我有类似下面:

materials = ['var1', 'var2', 'var3', 'var4'] 
materials_new= ['found_new', 'walls_new', 'roof_new', 'floor_new'] 

for i, j in zip(materials, materials_new): 
    df["%s"]=mlb.inverse_transform(grid_search_rf.predict(df[i])) % j 

但是由此产生的错误,“类型错误:不支持的操作数类型为%:‘名单’和‘海峡’”。

任何关于如何使用for循环和列表创建新的数据框列名的建议将会很棒。

备注:我可以在4列上单独运行模型以在df中创建新列,所以我不相信我的错误与模型有关。在某些时候,我会用12列来重复这个练习,所以我试图追求这个循环方法。

谢谢!

+0

你尝试:'DF [J] = mlb.inverse_transform(grid_search_rf.predict(DF [1]))' – MaxU

+0

,这是解决方案,谢谢! – Erin

试试这个:

for i, j in zip(materials, materials_new): 
    df[j]=mlb.inverse_transform(grid_search_rf.predict(df[i]))