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 - 将收集的列表转换为元组的主要内容,如果未能解决你的问题,请参考以下文章