pyspark - 将收集的列表转换为元组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyspark - 将收集的列表转换为元组相关的知识,希望对你有一定的参考价值。

我的数据框如下:

+----------------------------------+
| invoice_id | newcolor            |
+------------+---------------------+
|         1  | [red, white, green] | 
+------------+---------------------+
|         2  | [red, green]        |       
+------------+---------------------+

我需要一个新栏目如下:

[('red', 'color'), ('white', 'color), ('green','color)]
[('red', 'color'), ('green','color)]
答案

您可以将udf函数定义为

from pyspark.sql import functions as F
from pyspark.sql import types as T
def addColor(x):
    return [[color, 'color'] for color in x]

udfAddColor = F.udf(addColor, T.ArrayType(T.StringType()))

然后将它与.withColumn一起使用

df.withColumn('newcolor', udfAddColor(df.newcolor)).show(truncate=False)

你应该得到你想要的输出

+----------+----------------------------------------------+
|invoice_id|newcolor                                      |
+----------+----------------------------------------------+
|1         |[[red, color], [white, color], [green, color]]|
|2         |[[red, color], [green, color]]                |
+----------+----------------------------------------------+

以上是关于pyspark - 将收集的列表转换为元组的主要内容,如果未能解决你的问题,请参考以下文章

将列表列表转换为元组列表列表

将列表转换为元组对[重复]

将嵌套列表的字典转换为元组列表

如何将字典转换为元组列表?

将数据框转换为元组列表[重复]

将数据框转换为元组列表