gpt4 book ai didi

scala - 将行或列转换为数据框

转载 作者:行者123 更新时间:2023-12-01 09:48:57 24 4
gpt4 key购买 nike

我知道我可以像这样提取列:

  userData1.select(userData1("job"))

但是,如果我已经有一个列或一个列数组,我该如何从中获取数据框呢?到目前为止对我有用的是:

  userData1.select(userData1("id"), userData1("age"))

与您在 R 中可以做的相比,这有点冗长和丑陋:

userData1[, c("id", "age")]

那么行呢?例如:

  userData1.head(5)

如何将其转换为新的数据框?

最佳答案

要选择多个列,您可以使用可变参数语法:

import org.apache.spark.sql.DataFrame

val df: DataFrame = sc.parallelize(Seq(
(1, "x", 2.0), (2, "y", 3.0), (3, "z", 4.0)
)).toDF("foo", "bar", "baz")


// or df.select(Seq("foo", "baz") map col: _*)
val fooAndBaz: DataFrame = df.select(Seq($"foo", $"baz"): _*)
fooAndBaz.show

// +---+---+
// |foo|baz|
// +---+---+
// | 1|2.0|
// | 2|3.0|
// | 3|4.0|
// +---+---+

PySpark 等效于参数解包:

df = sqlContext.createDataFrame(
[(1, "x", 2.0), (2, "y", 3.0), (3, "z", 4.0)],
("foo", "bar", "baz"))

df.select(*["foo", "baz"]).show()

## +---+---+
## |foo|baz|
## +---+---+
## | 1|2.0|
## | 2|3.0|
## | 3|4.0|
## +---+---+

要在不收集的情况下限制行数,您可以使用限制方法:

val firstTwo: DataFrame = df.limit(2)
firstTwo.show

// +---+---+---+
// |foo|bar|baz|
// +---+---+---+
// | 1| x|2.0|
// | 2| y|3.0|
// +---+---+---+

相当于 SQL LIMIT 子句:

df.registerTempTable("df")
sqlContext.sql("SELECT * FROM df LIMIT 2").show

// +---+---+---+
// |foo|bar|baz|
// +---+---+---+
// | 1| x|2.0|
// | 2| y|3.0|
// +---+---+---+

关于scala - 将行或列转换为数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33726683/

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