我们如何使用withcolumn在pyspark中的数据框中创建许多新列

时间:2018-03-08 18:28:12

标签: python pyspark spark-dataframe pyspark-sql

我必须在数据框中创建大约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))

有人可以建议什么是最佳的最佳方式。

1 个答案:

答案 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)