我有一個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以上 –