Значение бесконечности в искре информационного кадра / scala - PullRequest
1 голос
/ 29 марта 2020

У меня есть датафрейм со значениями бесконечности. Как я могу заменить его на 0.0.

Я пробовал это, но это не работает.

val Nan= dataframe_final.withColumn("Vitesse",when(col("Vitesse").isin(Double.NaN,Double.PositiveInfinity,Double.NegativeInfinity),0.0))

Пример кадра данных

--------------------
|    Vitesse       |
--------------------
| 8.171069002316942|
|  Infinity        |
| 4.290418664272539|
|16.19811830014666 |
|                  |

Как заменить «Бесконечность на 0,0»?

Спасибо.

Ответы [ 2 ]

1 голос
/ 29 марта 2020
scala> df.withColumn("Vitesse", when(col("Vitesse").equalTo(Double.PositiveInfinity),0.0).otherwise(col("Vitesse")))
res1: org.apache.spark.sql.DataFrame = [Vitesse: double]

scala> res1.show
+-----------------+
|          Vitesse|
+-----------------+
|8.171069002316942|
|              0.0|
|4.290418664272539|
+-----------------+

Вы можете попробовать как выше.

0 голосов
/ 29 марта 2020

Ваш подход правильный, используя when() .otherwise()

  • добавьте пропущенный оператор otherWise, чтобы получить значения Vitesse как есть, если значение не в Infinity,-Infinity,NaN .

Example:

val df=Seq(("8.171".toDouble),("4.2904".toDouble),("16.19".toDouble),(Double.PositiveInfinity),(Double.NegativeInfinity),(Double.NaN)).toDF("Vitesse")
df.show()
//+---------+
//|  Vitesse|
//+---------+
//|    8.171|
//|   4.2904|
//|    16.19|
//| Infinity|
//|-Infinity|
//|      NaN|
//+---------+

df.withColumn("Vitesse", when(col("Vitesse").isin(Double.PositiveInfinity,Double.NegativeInfinity,Double.NaN),0.0).
otherwise(col("Vitesse"))).
show()
//+-------+
//|Vitesse|
//+-------+
//|  8.171|
//| 4.2904|
//|  16.19|
//|    0.0|
//|    0.0|
//|    0.0|
//+-------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...