在PySpark中制作许多空列

时间:2018-05-22 22:18:26

标签: dataframe pyspark

我有许多数据框的列表,每个数据框都有一个主模式的子集模式。为了结合这些数据帧,我需要在所有数据帧之间构建一个通用模式。我的想法是我需要为每个数据帧的所有缺失列创建空列。我平均有80个缺失的功能和100个数据帧。

这有点像Concatenate two PySpark dataframes

的重复或启发

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

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"))

这似乎需要花费大量时间。是否有更快的方法将这些数据帧与null结合以代替缺少的功能?

1 个答案:

答案 0 :(得分:2)

您可以通过以下代码替换代码来缩短时间:

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

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