pyspark 在循环中将数组转换为字符串

Posted

技术标签:

【中文标题】pyspark 在循环中将数组转换为字符串【英文标题】:pyspark convert array to string in loop 【发布时间】:2021-04-10 20:03:23 【问题描述】:

我有一个包含字符串、整数和数组类型列的 psypark 数据框。我正在尝试为所有列运行 for 循环以检查它们是否是任何数组类型列并将其转换为字符串。

pyspark 数据框中的输出应该包含 int,string 列。

下面的代码将只返回从数组转换为字符串的列。如何包含 else 语句以从数据框中获取非数组类型的剩余列。

dfstring = df.select([(F.col(c).cast('String')).alias(c) for c in df.columns if dict(df.dtypes)[c] == 'array<string>'])

【问题讨论】:

【参考方案1】:

您可以尝试如下修改列表推导:

dfstring = df.select([
    (F.col(c).cast('String')).alias(c)
    if 'array' in dict(df.dtypes)[c]
    else F.col(c)
    for c in df.columns 
])

【讨论】:

以上是关于pyspark 在循环中将数组转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PySpark 中将 Vector 类型的列转换为数组/字符串类型?

如何在pyspark中将字符串列转换为ArrayType

在pyspark中将字符串价格值转换为double类型

如何在pyspark中将字符串值转换为arrayType

如何在 PySpark 中将字符串转换为字典 (JSON) 的 ArrayType

在 pyspark SQL 中将字符串日期转换为日期格式