Databricks Koalas 基于另一个 COlumn 值 Lambda 函数的列赋值
Databricks Koalas Column Assignment Based on Another COlumn Value Lambda Function
给定一个考拉数据框:
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
预期 return:
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
为什么要将 "High" 分配给每个值。意图是对每一行进行操作,是不是在看整列的比较?
在 koalas df 上使用 assign
对我来说似乎并不容易,但对于你的情况,我会 mul
列 'high_risk' 乘以 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 个,这将失败。
给定一个考拉数据框:
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
预期 return:
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
为什么要将 "High" 分配给每个值。意图是对每一行进行操作,是不是在看整列的比较?
在 koalas df 上使用 assign
对我来说似乎并不容易,但对于你的情况,我会 mul
列 'high_risk' 乘以 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 个,这将失败。