gpt4 book ai didi

python - Databricks Koalas 基于另一个 COlumn 值 Lambda 函数的列赋值

转载 作者:行者123 更新时间:2023-12-04 04:23:56 25 4
gpt4 key购买 nike

给定一个考拉数据框:

df = ks.DataFrame({"high_risk": [0, 1, 0, 1, 1], 
"medium_risk": [1, 0, 0, 0, 0]
})

运行 lambda 函数以根据现有列值获取新列:

df = df.assign(risk=lambda x: "High" if x.high_risk else ("Medium" if x.medium_risk else "Low"))
df
Out[72]:
high_risk medium_risk risk
0 0 1 High
4 1 0 High
1 1 0 High
2 0 0 High
3 1 0 High

预期返回:

       high_risk  medium_risk  risk
0 0 1 Medium
4 1 0 High
1 1 0 High
2 0 0 Low
3 1 0 High

为什么这会将“高”分配给每个值。意图是对每一行进行操作,是不是在看整列比较?

最佳答案

在 koalas df 上使用 assign 对我来说似乎并不容易,但对于你的情况,我会将列“high_risk”mul 乘以 2,然后 add 'medium_risk' 列,最后 map 结果将 2 替换为 'high'(因为你之前将该列乘以 2) 1 乘以 'medium' 和 0 乘以 'low' 这样作为:

df = df.assign(risk= df.high_risk.mul(2).add(df.medium_risk)
.map({0:'low', 1:'medium', 2:'high'}))
df
high_risk medium_risk risk
0 0 1 medium
1 1 0 high
2 0 0 low
3 1 0 high
4 1 0 high

注意:如果您在高风险和中风险列中都有 1,这将失败。

关于python - Databricks Koalas 基于另一个 COlumn 值 Lambda 函数的列赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58330678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com