如何将Python列表添加为PySpark DataFrame的新列
解决方案
你可以通过PySpark内置的array和lit函数将Python列表转换为Spark的数组字面量,作为新列添加到DataFrame中,完整实现代码如下:
# 导入依赖函数 from pyspark.sql.functions import array, lit # 定义你的Python列表 l = ["abc is good", "xyz is bad"] # 初始化示例DataFrame df = spark.createDataFrame([("one","two")],["A","B"]) # 新增存储列表的列C df = df.withColumn("C", array(*[lit(item) for item in l])) # 打印结果验证 df.show(truncate=False)
运行后输出结果符合预期:
+---+---+--------------------------+ |A |B |C | +---+---+--------------------------+ |one|two|[abc is good, xyz is bad] | +---+---+--------------------------+
实现说明
PySpark的lit函数用于将Python标量转换为Spark可识别的字面量,array函数可以将多个字面量组合为数组类型的列。由于不能直接将Python列表作为参数传入Spark列函数,因此我们先遍历列表将每个元素转为lit类型,再通过array拼接成数组列,最终每一行的C列都会保存完整的目标列表。
内容的提问来源于stack exchange,提问作者Cassius Clay
相关产品推荐
相关产品推荐

