【问题标题】:Pyspark Dataframe: Transform many columnsPyspark Dataframe:转换多列
【发布时间】:2021-06-14 20:59:33
【问题描述】:

我有一个从 parquet 文件中读取的 10 列的 pyspark 数据框

df = spark.read.parquet(path)

我想对该数据框列的一个子集应用几个预处理步骤:col_list

以下工作正常,但除了有点丑之外,我也觉得它不是最佳的。

import pyspark.sql.functions as F

for col in col_list:
    df = df.withColumn(col, F.regexp_replace(col, ".", " ")
    df = df.withColumn(col, F.regexp_replace(col, "_[A-Z]_", "")

还有其他类似的文本处理步骤。

所以问题是上述是否尽可能优化和优雅,以及我是否/如何使用transform 来实现上述步骤的顺序执行。

非常感谢。

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql


    【解决方案1】:

    您可以一次选择所有需要的列:

    import pyspark.sql.functions as F
    
    df2 = df.select(
        *[c for c in df.columns if c not in col_list],
        *[F.regexp_replace(F.regexp_replace(c, ".", " "), "_[A-Z]_", "").alias(c) for c in df.columns if c in col_list]
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 2022-12-18
      • 1970-01-01
      相关资源
      最近更新 更多