gpt4 book ai didi

scala - Spark SQL - 在更新一个列时选择所有列

转载 作者:行者123 更新时间:2023-12-05 05:07:57 30 4
gpt4 key购买 nike

我有一个包含许多列的数据框,我想对特定列进行一些更改,同时保持所有其他列不变。

更具体地说,我想展开一列。

目前我正在选择中指定所有列名。

df.select($"col1", $"col2", ..., $"colN", explode($"colX"))

但我宁愿不必指定所有列名。

我想我可以使用df.columns,过滤掉我想展开的那个,然后在select中使用这个数组。

有没有更简洁的方法来实现这一点?

最佳答案

这是使用 filterNot 的一种方法。 exp_col 是您要与 explode 一起使用的列的名称:

import org.apache.spark.sql.functions.explode

val cols= df.columns.filterNot(_ == "exp_col").map(col(_)) :+ explode($"exp_col")

df.select(cols:_*).show

使用 filterNot,我们创建了一个列表,其中包含我们不想对其应用 explode 的项目。然后我们用 :+ explode($"exp_col") 将它们连接在一起。

关于scala - Spark SQL - 在更新一个列时选择所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58660490/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com