Новый столбец получает значение Null - PullRequest
0 голосов
/ 25 июня 2018

У меня есть следующий DataFrame df

+-----------+-----------+-----------+
|CommunityId|nodes_count|edges_count|
+-----------+-----------+-----------+
|         26|          3|         11|
|        964|         16|         18|
|       1806|          9|         31|
|       2040|         13|         12|
|       2214|          8|          8|
|       2927|          7|          7|

Затем я добавляю столбец Rate следующим образом:

df
  .withColumn("Rate",when(col("nodes_count") =!= 0, (lit("edges_count")/lit("nodes_count")).as[Double]).otherwise(0.0))

Вот что я получаю:

+-----------+-----------+-----------+-----------------------+
|CommunityId|nodes_count|edges_count|                   Rate|
+-----------+-----------+-----------+-----------------------+
|         26|          3|         11|                   null|
|        964|         16|         18|                   null|
|       1806|          9|         31|                   null|
|       2040|         13|         12|                   null|
|       2214|          8|          8|                   null|
|       2927|          7|          7|                   null|

По какой-то причине Rate всегда равно null.

1 Ответ

0 голосов
/ 25 июня 2018

Это происходит потому, что вы используете lit.Вместо этого следует использовать col:

df
  .withColumn(
    "Rate" ,when(col("nodes_count") =!= 0,
    (col("edges_count") / col("nodes_count")).as[Double]).otherwise(0.0))

, хотя и when, и Double здесь бесполезны, и простого деления будет более чем достаточно:

df.withColumn("Rate", col("edges_count") / col("nodes_count"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...