2017-08-14 62 views
1

對於我的數據框中的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

回答

0

試試這個:

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