如何使用PySpark为DataFrame新增空数组类型的列
PySpark DataFrame 新增空数组列实现方案
我们需要为现有DataFrame新增一列存储空数组,后续再对该列数据做填充,预期的初始效果如下:
| col1 | col2 |
|---|---|
| 1 | [] |
| 2 | [] |
| 3 | [] |
踩坑记录
- 第一种尝试写法:
df = df.withColumn("col2", F.array(None))
该写法无法得到纯空数组,不符合预期。
- 第二种尝试写法(先建空列再转数组):
df= df.withColumn("empty_col", F.lit(None).cast(T.StringType())) df= df.withColumn("col2", F.array(F.col("empty_col")))
该方案得到的列是包含null值的数组,并非没有任何元素的空数组,同样不符合要求。
正确实现方案
经测试,以下写法可以实现生成指定类型的纯空数组列:
df = df.withColumn("col2", F.array().cast("array<string>"))
如果需要其他元素类型的空数组,只需要修改cast里的类型定义即可,比如需要整型空数组就改为cast("array<int>")。
内容的提问来源于stack exchange,提问作者THB
相关产品推荐
相关产品推荐

