pyspark concat-ws用于数组到字符串

hyrbngr7  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(450)

我有一个pysparkDataframe,它有string、int和array类型的列。我正在尝试对所有列运行for循环,以检查它们是否是任何数组类型的列,并将其转换为字符串。
pysparkDataframe中的输出应该保存int、string列。
我有下面的代码,但它失败了以下错误。有没有修复此错误的建议

df2 = df.select([df.withColumn(c,F.concat_ws(",",col(c))).alias(c)  if dict(df.dtypes)[c] in 'array<string>' else F.col(c) for c in df.columns])

错误:对于列文字,请使用'lit'、'array'、'struct'或'create\u map'函数。

kcwpcxri

kcwpcxri1#

你不能把 withColumn 内部 select . 请尝试以下代码:

import pyspark.sql.functions as F

df2 = df.select([
    F.concat_ws(",", c).alias(c)  
    if dict(df.dtypes)[c] == 'array<string>'
    else F.col(c)  
    for c in df.columns
])

相关问题