我必须在数据框中创建大约800个虚拟列,其中包含Null值。
我不想对单个列使用df.withColumn('x', lit(None))
,因为列数很多。
我试过了map(lambda x: df.withColumn(x, lit(None)), column_list)
,但它没有用。
编写下面的代码片段看起来也不错。
for column in columns:
df = df.withColumn(column, lit(None))
有人可以建议什么是最佳的最佳方式。
答案 0 :(得分:0)
您未列出我能想到的唯一方法是使用rdd
。
将每一行映射到自身以及(None,)*len(columns)
schema = StructType(df.schema.fields + [StructField(c, NullType()) for c in columns])
df = df.rdd.map(lambda row: tuple(row) + (None,)*len(columns)).toDF(schema=schema)