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

Python 使用for循环,跨多个列运行模型,并使用模型输出创建新列,python,pandas,dataframe,Python,Pandas,Dataframe,对于我的数据框架中的4列,我希望对每一列运行一个模型,并将结果作为4个新列附加到原始数据框架中 我目前的情况如下: 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(g

对于我的数据框架中的4列,我希望对每一列运行一个模型,并将结果作为4个新列附加到原始数据框架中

我目前的情况如下:

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 
但是,这会产生错误,“TypeError:不支持%的操作数类型:'list'和'str'”

关于如何使用for循环和列表创建新的数据框列名的任何建议都将非常有用

旁注:我能够在4列上单独运行模型,以在df中创建新列,因此我不认为我的错误与模型有关。在某个时候,我会用12个以上的列重复这个练习,所以我尝试使用这个for循环方法

谢谢

试试这个:

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

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

你试过了吗:
df[j]=mlb.inverse\u transform(grid\u search\u rf.predict(df[i])
这就是解决方案,谢谢!你试过了吗:
df[j]=mlb.inverse\u transform(grid\u search\u rf.predict(df[i])
这就是解决方案,谢谢!