如何在pyspark函数“withcolumn”中传递列表

wlwcrazw  于 2021-05-17  发布在  Spark
关注(0)|答案(1)|浏览(440)

我正在对Dataframe的多个列执行ltrim和rtrim,但现在我可以单独执行了。喜欢


# selected_colums = selected_colums.withColumn("last_name", ltrim(selected_colums.last_name))

# selected_colums = selected_colums.withColumn("last_name", rtrim(selected_colums.last_name))

# selected_colums = selected_colums.withColumn("email", ltrim(selected_colums.email))

# selected_colums = selected_colums.withColumn("email", rtrim(selected_colums.email))

# selected_colums = selected_colums.withColumn("phone_number", ltrim(selected_colums.phone_number))

# selected_colums = selected_colums.withColumn("phone_number", rtrim(selected_colums.phone_number))

但我想像下面这样循环

sdk = ['first_name','last_name','email','phone_number','email_alt','phone_number_alt']
for x in sdk:
  selected_colums = selected_colums.withColumn(x, ltrim(selected_colums.last_name))

它给了我语法错误。请帮我优化这段代码,这样对于任何数量的列我都可以做ltrim或rtrim只是传递列表。

6rvt4ljy

6rvt4ljy1#

检查以下代码。
导入所需函数

>>> from pyspark.sql.functions import col

应用 ltrim 以及 rtrim 在所有列上

>>> columnExprs = map(lambda c: rtrim(ltrim(col(c))).alias(c),df.columns)

在选择中应用列表达式

df.select(*columnExprs).show()

相关问题