给出考拉数据框:
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
为什么将“高”分配给每个值。目的是要对每一行进行操作,是查看比较中的整个列吗?
答案 0 :(得分:0)
在考拉df上使用assign
对我来说似乎并不容易,但是对于您而言,我会mul
将“ high_risk”列乘以2,然后add
将“ medium_risk”列和最后map
的结果将2替换为“高”(因为您将该列乘以2之前的结果)将1替换为“中”,将0替换为“低”,例如:
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,则此操作将失败。