gpt4 book ai didi

scala - 如何将多列连接成单列(对其数量没有先验知识)?

转载 作者:行者123 更新时间:2023-12-04 13:36:53 25 4
gpt4 key购买 nike

假设我有以下数据框:

agentName|original_dt|parsed_dt|   user|text|
+----------+-----------+---------+-------+----+
|qwertyuiop| 0| 0|16102.0| 0|

我希望创建一个新的数据框,其中还有一个列,该列连接了该行的所有元素:
agentName|original_dt|parsed_dt|   user|text| newCol
+----------+-----------+---------+-------+----+
|qwertyuiop| 0| 0|16102.0| 0| [qwertyuiop, 0,0, 16102, 0]

注意:这只是一个例子。列数和名称未知。它是动态的。

最佳答案

TL;博士 使用 struct功能与 Dataset.columns运算符(operator)。

引用 struct 的 Scaladoc功能:

struct(colName: String, colNames: String*): Column Creates a new struct column that composes multiple input columns.



有两种变体:基于字符串的列名或使用 Column表达式(这使您可以更灵活地应用在连接列上的计算)。

来自 Dataset.columns :

columns: Array[String] Returns all column names as an array.



您的案例将如下所示:
scala> df.withColumn("newCol",
struct(df.columns.head, df.columns.tail: _*)).
show(false)
+----------+-----------+---------+-------+----+--------------------------+
|agentName |original_dt|parsed_dt|user |text|newCol |
+----------+-----------+---------+-------+----+--------------------------+
|qwertyuiop|0 |0 |16102.0|0 |[qwertyuiop,0,0,16102.0,0]|
+----------+-----------+---------+-------+----+--------------------------+

关于scala - 如何将多列连接成单列(对其数量没有先验知识)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44200115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com