代码之家  ›  专栏  ›  技术社区  ›  leonard

在pyspark中生成许多空列

  •  1
  • leonard  · 技术社区  · 7 年前

    我有许多数据帧的列表,每个数据帧都有一个主模式的子集模式。为了联合这些数据帧,我需要在所有数据帧中构建一个公共模式。我的想法是,我需要为每个数据帧的所有缺失列创建空列。我平均有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"))
    

    这似乎需要花费大量的时间。有没有一种更快的方法来用空值代替缺少的特性来连接这些数据帧?

    1 回复  |  直到 7 年前
        1
  •  2
  •   user9831229    7 年前

    您可以将代码替换为:

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