我有一个39列的数据帧,每列都有不同的正常范围。 通过使用正常范围,我想找出正常值,并把0否则把1.使用scala数据帧中的最小值和最大值来寻找正常值
这是我所做的,但我想为39列做。
val test :(Double => Double) = (value: Double) =>
{
if(value >= 45 && value <= 62) 0
else 1
}
但我不明白如何使用不同的值到每一列。
用于离: 我有这样的DF
+--------------------+---------+-------------------------+---------+
|a |b |c |d |
+--------------------+---------+-------------------------+---------+
| 207.0| 40.0| 193.0| 39.0|
| 98.0| 17.0| 193.0| 15.0|
| 207.0| 13.0| 193.0| 17.0|
| 207.0| 26.0| 193.0| 23.0|
| 207.0| 35.0| 193.0| 24.0|
| 207.0| 91.0| 193.0| 45.0|
| 207.0| 40.0| 193.0| 37.0|
| 207.0| 23.0| 193.0| 23.0|
| 207.0| 26.0| 193.0| 22.0|
| 207.0| 39.0| 193.0| 34.0|
我想导致像下面使用范围
col range
a 50-160
b 1-21
c 5-40
d 7-27
如果在范围内的值,则0否则为1
+--------------------+---------+-------------------------+---------+
|a |b |c |d |
+--------------------+---------+-------------------------+---------+
| 1.0| 1.0| 1.0| 1.0|
| 0.0| 0.0| 1.0| 0.0|
| 1.0| 0.0| 1.0| 0.0|
| 1.0| 1.0| 1.0| 0.0|
| 1.0| 1.0| 1.0| 0.0|
| 1.0| 1.0| 1.0| 1.0|
| 1.0| 1.0| 1.0| 1.0|
| 1.0| 1.0| 1.0| 0.0|
| 1.0| 1.0| 1.0| 0.0|
| 1.0| 1.0| 1.0| 1.0|
I want to do this for 39 columns.(scala/pyspark preferred)
请让我知道,如果事情还不清楚,我希望我给你钥匙,让你现在自己处理这个问题,并毫不犹豫地将问题标记为答案,如果这适合你 – belka
我很感谢你的回答这是最详细的答案我曾经得到但仍然没有工作所有39栏可以只显示上面的示例数据,它会更有帮助 –
也,你可以看到我的udf以上 –