Scala dataframe Добавить новый столбец на основе других столбцов? - PullRequest
0 голосов
/ 16 января 2020

Пример DF:

A      B        C        D        E      F
3      6       26        0        7      2
1      14       3        21       9      1

Что я хочу

A      B         C         D       E      F     G
3      6        26         0       7      2     14
1      14        3         21      9      1     9

Я хочу, чтобы новый столбец (G) был (E * F). Кто-нибудь знает, как это сделать, потому что после этого мне нужно будет показывать только самые большие 20 цифр в новом столбце G

Извините, если об этом спрашивали раньше, и спасибо заранее.

Ответы [ 2 ]

1 голос
/ 16 января 2020

С некоторыми ярлыками:

import org.apache.spark.sql.functions._ 
val df = Seq(ABCDEF(3, 6, 26, 0, 7, 2), ABCDEF(1, 14, 3, 21, 9, 1)).toDF

df.show
/*
+---+---+---+---+---+---+
|  A|  B|  C|  D|  E|  F|
+---+---+---+---+---+---+
|  3|  6| 26|  0|  7|  2|
|  1| 14|  3| 21|  9|  1|
+---+---+---+---+---+---+
*/

df.withColumn("G", 'E * 'F).sort(-'G).show
/*
+---+---+---+---+---+---+---+
|  A|  B|  C|  D|  E|  F|  G|
+---+---+---+---+---+---+---+
|  3|  6| 26|  0|  7|  2| 14|
|  1| 14|  3| 21|  9|  1|  9|
+---+---+---+---+---+---+---+
*/
1 голос
/ 16 января 2020

Что-то вроде:

import org.apache.spark.sql.functions.{ col, desc}

val df: DataFrame = ???
df.withColumn("G", col("E") * col("F")).sort(desc("G")).show(20)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...