基於this問題,我想知道如何使用def()來計算Pandas的新列並使用多個參數(字符串和整數)?用Pandas計算新列
具體的例子:
df_joined["IVbest"] = IV(df_joined["Saison"], df_joined["Wald_Typ"], df_joined["NS_Cap"])
「賽鬆」,「Wald_Typ」都是字符串「NS_Cap」是一個整數
現在我想運行通過這個定義所有這些值,並再次回到我的X價值:
def IV(saison, wald, ns):
if saison == "Sommer":
if wald == "Laubwald":
x = ns * 0.1
elif wald == "Nadelwald":
x = ns * 0.2
elif wald == "Mischwald":
x = ns * 0.3
elif saison == "Winter":
if wald == "Laubwald":
x = ns * 0.01
elif wald == "Nadelwald":
x = ns * 0.02
elif wald == "Mischwald":
x = ns * 0.03
return x
我該如何做到最好?像
df_joined["IVbest"] = IV(df_joined["Saison", "Wald_Typ", "NS_Cap"])
或
df_joined["IVbest"] = df_joined["Saison", "Wald_Typ", "NS_Cap"].apply(IV)
但沒有
我已經試過的東西的工作:(
您需要將'axis = 1'傳遞給'apply':'df_joined [「IVbest」] = df_joined [[「Saison」,「Wald_Typ」,「NS_Cap」]]。apply(lambda x:IV(x [ Saison「],x [」Wald_Typ「],x [」NS_Cap「]),axis = 1)' – EdChum
如果您將簽名更改爲」def IV(df):#do df ['saison'],df ['wald']和df ['ns']'返回一個系列' – EdChum
謝謝埃德!你的第一個例子效果很好。如果我希望輸出是一個整數?我可以將類似int(round(xy))的東西應用於輸出嗎?我肯定會考慮你的其他想法! – Khaled