我有一个复杂的DataFrame结构,并希望轻松地使列无效。我创建了隐式类,它们连接功能并轻松解决2D DataFrame结构,但是一旦DataFrame变得更复杂,使用ArrayType或MapType,我就没有太多运气了。例如:
我将架构定义为:
StructType(
StructField(name,StringType,true),
StructField(data,ArrayType(
StructType(
StructField(name,StringType,true),
StructField(values,
MapType(StringType,StringType,true),
true)
),
true
),
true)
)
我想生成一个新的DF,它将MapType的字段data.value
设置为null,但由于这是数组的一个元素,我无法弄清楚如何。我认为它类似于:
df.withColumn("data.values", functions.array(functions.lit(null)))
但最终会创建一个data.values
的新列,并且不会修改数据数组的values
元素。
答案 0 :(得分:0)
我遇到了同样的问题,并假设您不需要结果具有任何新字段或具有不同类型的字段,这是一种无需重新定义整个结构即可解决此问题的解决方案:Change value of nested column in DataFrame