基于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