データフレームから特定の列の最小値と最大値にアクセスしたいのですが、その列のヘッダーがなく、番号だけなので、scalaを使って行うべきでしょうか?
多分、次のようなものだと思います。
val q = nextInt(ncol) //we pick a random value for a column number
col = df(q)
val minimum = col.min()
くだらない質問に聞こえるかもしれませんが、この質問に関する情報をSOで見つけることができませんでした :/。
メタデータからカラム名を取得するのはどうでしょうか。
val selectedColumnName = df.columns(q) //pull the (q + 1)th column from the columns array
df.agg(min(selectedColumnName), max(selectedColumnName))
カラム番号を使って、まずカラム名を抽出し(df.columns
にインデックスを付けて)、次にカラム名を集約して使うことができます。
val df = Seq((2.0, 2.1), (1.2, 1.4)).toDF("A", "B")
// df: org.apache.spark.sql.DataFrame = [A: double, B: double]
df.agg(max(df(df.columns(1))), min(df(df.columns(1)))).show
+------+------+
|max(B)|min(B)|
+------+------+
| 2.1| 1.4|
+------+------+