gpt4 book ai didi

apache-spark - 将相同的函数应用于 Spark 数据帧行的所有字段

转载 作者:行者123 更新时间:2023-12-03 07:19:11 25 4
gpt4 key购买 nike

我有一个数据框,其中有大约 1000 个(变量)列。

我想让所有值都大写。

这是我想到的方法,您能建议一下这是否是最好的方法。

  • 走行
  • 查找架构并存储在数组中,并查找其中有多少个字段。
  • 映射数据框中的每一行以及数组中元素数量的上限
  • 将函数应用于每个字段的大写并返回行

最佳答案

如果您只是想将相同的函数应用于所有列,这样应该就足够了:

import org.apache.spark.sql.functions.{col, upper}

val df = sc.parallelize(
Seq(("a", "B", "c"), ("D", "e", "F"))).toDF("x", "y", "z")
df.select(df.columns.map(c => upper(col(c)).alias(c)): _*).show

// +---+---+---+
// | x| y| z|
// +---+---+---+
// | A| B| C|
// | D| E| F|
// +---+---+---+

或者在Python中

from pyspark.sql.functions import col, upper

df = sc.parallelize([("a", "B", "c"), ("D", "e", "F")]).toDF(("x", "y", "z"))
df.select(*(upper(col(c)).alias(c) for c in df.columns)).show()

## +---+---+---+
## | x| y| z|
## +---+---+---+
## | A| B| C|
## | D| E| F|
## +---+---+---+

另请参阅:SparkSQL: apply aggregate functions to a list of column

关于apache-spark - 将相同的函数应用于 Spark 数据帧行的所有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34037889/

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