Как добавить два столбца вместе и упорядочить по идентификатору в Scala? - PullRequest
0 голосов
/ 12 марта 2019

Мой df похож на id col1 col2, и я хочу сложить col1 и col2 вместе, чтобы получить cols. Затем отобразите id cols заказ по идентификатору. Я знаю, как сделать сумму вроде df.select($"col1" + $"col2").orderBy(desc("id")), но df.select($"col1" + $"col2") удалит id, поэтому я не могу сделать orderBy id. Есть идеи?

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Что-то вроде ниже.

val df = Seq(("Edward",1, 1, 1000,"me1@example.com"),
      ("Michal",3,2,15000,"me1@example.com"),
      ("Steve",7,3,25000,"you@example.com"),
      ("Jordan",2,4,40000, "me1@example.com")).
      toDF("Name", "ID1", "ID2","Salary","MailId")

    df.show()

+------+---+---+------+---------------+
|  Name|ID1|ID2|Salary|         MailId|
+------+---+---+------+---------------+
|Edward|  1|  1|  1000|me1@example.com|
|Michal|  3|  2| 15000|me1@example.com|
| Steve|  7|  3| 25000|you@example.com|
|Jordan|  2|  4| 40000|me1@example.com|
+------+---+---+------+---------------+

    val df1 = df.select($"Salary",($"ID"+$"ID2").as("ID")).orderBy(desc("Salary"))

df1.show()

+------+---+
|Salary| ID|
+------+---+
| 40000|  6|
| 25000| 10|
| 15000|  5|
|  1000|  2|
+------+---+
1 голос
/ 12 марта 2019
df.withColumn("cols", $"col1" + $"col2").orderBy(desc("id")).select($"id", 
$"cols")

withColumn возвращает новый фрейм данных со столбцом «cols».Затем выполните orderBy для столбца «id» и выберите столбцы «id» и «cols».В качестве альтернативы, вы также можете просто удалить столбцы после функции dropBy (columnNames *) function

scala> val df = Seq((2, 10, 20), (1, 5, 30), (3, 25, 15)).toDS.select($"_1" as "id", $"_2" as "col1", $"_2" as "col2")
df: org.apache.spark.sql.DataFrame = [id: int, col1: int ... 1 more field]

scala> df.show
+---+----+----+
| id|col1|col2|
+---+----+----+
|  2|  10|  10|
|  1|   5|   5|
|  3|  25|  25|
+---+----+----+


scala> df.withColumn("cols", $"col1" + $"col2").orderBy(desc("id")).select($"id", $"cols").show
+---+----+
| id|cols|
+---+----+
|  3|  50|
|  2|  20|
|  1|  10|
+---+----+


scala> df.withColumn("cols", $"col1" + $"col2").orderBy(desc("id")).drop("col1", "col2").show
+---+----+
| id|cols|
+---+----+
|  3|  50|
|  2|  20|
|  1|  10|
+---+----+


scala> df.withColumn("cols", $"col1" + $"col2").orderBy(desc("id")).show
+---+----+----+----+
| id|col1|col2|cols|
+---+----+----+----+
|  3|  25|  25|  50|
|  2|  10|  10|  20|
|  1|   5|   5|  10|
+---+----+----+----+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...