pySpark 3.0如何修剪所有列的空格[重复]

Posted

技术标签:

【中文标题】pySpark 3.0如何修剪所有列的空格[重复]【英文标题】:pySpark 3.0 how to trim spaces for all columns [duplicate] 【发布时间】:2021-02-26 07:18:05 【问题描述】:

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

    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)

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

它应该可以工作。 PS 对于 spark 2.x,应该使用 trim(col(c))。参考***.com/questions/52596712/… @thotwielder 是的,你是对的,我已经编辑了我的答案来纠正这个问题。

以上是关于pySpark 3.0如何修剪所有列的空格[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 LibreOffice 或 Google 表格中修剪整列的起始空间?

字符串空白清理不是修剪[重复]

如何在修剪其中一列的结果时选择所有列?

pyspark 数据框中所有列的总计数为零

如何在 PySpark 中进行分组并查找列的唯一项目 [重复]

修剪或删除元素内的前导/尾随空格[重复]