首页 > 解决方案 > pySpark 3.0 如何修剪所有列的空间

问题描述

对于此数据框:如何在循环中修剪每一列的所有前导和尾随空格?

    df = spark.createDataFrame(
        [
            (' a', '10 ', ' b '), # create your data here, be consistent in the types.
        ],
        ['col1', 'col2','col3'] # add your columns label here
    )
    df.show(5)

我知道如何通过像下面那样指定每一列来做到这一点,但需要对循环中的所有列执行此操作,因为在实际情况下,我不知道列名和列的数量。

    from pyspark.sql.functions import trim
    df = df.withColumn("col2", trim(df.col2))
    df.show(5)

标签: apache-sparkpysparkapache-spark-sql

解决方案


您可以使用列表推导应用于trim所有列:

from pyspark.sql.functions import trim, col
df2 = df.select([trim(col(c)).alias(c) for c in df.columns])

推荐阅读