Saya ingin mengakses min dan max dari kolom tertentu dari dataframe saya tetapi saya tidak memiliki header kolom, hanya nomornya, jadi saya harus menggunakan scala?
mungkin seperti ini:
val q = nextInt(ncol) //we pick a random value for a column number
col = df(q)
val minimum = col.min()
Maaf jika ini terdengar seperti pertanyaan konyol tapi saya tidak bisa menemukan info di SO tentang pertanyaan ini :/
Bagaimana kalau mendapatkan nama kolom dari metadata:
val selectedColumnName = df.columns(q) //pull the (q + 1)th column from the columns array
df.agg(min(selectedColumnName), max(selectedColumnName))
Anda dapat menggunakan pencocokan pola saat menetapkan variabel:
import org.apache.spark.sql.functions.{min, max}
import org.apache.spark.sql.Row
val Row(minValue: Double, maxValue: Double) = df.agg(min(q), max(q)).head
Dimana q adalah Kolom
atau nama kolom (String). Dengan asumsi tipe data Anda adalah Double
.
Anda dapat menggunakan nomor kolom untuk mengekstrak nama kolom terlebih dahulu (dengan mengindeks df.columns
), kemudian mengagregasi menggunakan nama kolom:
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|
+------+------+