Dataframe 在PySpark中创建许多空列

Dataframe 在PySpark中创建许多空列,dataframe,pyspark,Dataframe,Pyspark,我有一个包含许多数据帧的列表,每个数据帧都有一个主模式的子集模式。为了合并这些数据帧,我需要在所有数据帧之间构建一个公共模式。我的想法是,我需要为每个数据帧的所有缺失列创建空列。我平均有80个缺少的特性和100个数据帧 这有点像是复制品或是灵感来源 我目前正在以这种方式实施: from pyspark.sql.functions import lit for df in dfs: # list of dataframes for feature in missing_featur

我有一个包含许多数据帧的列表,每个数据帧都有一个主模式的子集模式。为了合并这些数据帧,我需要在所有数据帧之间构建一个公共模式。我的想法是,我需要为每个数据帧的所有缺失列创建空列。我平均有80个缺少的特性和100个数据帧

这有点像是复制品或是灵感来源

我目前正在以这种方式实施:

from pyspark.sql.functions import lit

for df in dfs:    # list of dataframes
    for feature in missing_features:   # list of strings
        df = df.withColumn(feature, lit(None).cast("string"))

这似乎需要花费大量的时间。有没有一种更快的方法可以将这些数据帧用空值替换掉缺少的功能?

您可以通过以下方式来稍微缩短时间:

cols = ["*"] + [lit(None).cast("string").alias(f) for f in missing_features]

dfs_new = [df.select(cols) for df in dfs]

对于一部分数据,这个方法花费了455ms,我上面发布的方法花费了13s。非常感谢!