web-dev-qa-db-ja.com

Scala Spark DataFrame:dataFrame.select列名のシーケンスが指定された複数の列

_val columnName=Seq("col1","col2",....."coln");
_

Dataframe.select操作を実行して、指定された列名のみを含むデータフレームを取得する方法はありますか。 dataframe.select("col1","col2"...)を実行できることは知っていますが、columnNameは実行時に生成されます。ループ内の列名ごとにdataframe.select()を繰り返し実行できます。パフォーマンスのオーバーヘッドはありますか?これを達成する他の簡単な方法はありますか?

23
Himaprasoon
val columnNames = Seq("col1","col2",....."coln")

// using the string column names:
val result = dataframe.select(columnNames.head, columnNames.tail: _*)

// or, equivalently, using Column objects:
val result = dataframe.select(columnNames.map(c => col(c)): _*)
46
Tzach Zohar

dataFrame.select()には列のシーケンスが必要であり、文字列のシーケンスがあるため、シーケンスをListsのcolに変換し、そのリストをシーケンスに変換する必要があります。 columnName.map(name => col(name)): _*は文字列のシーケンスから列のシーケンスを提供し、これをパラメーターとしてselect()に渡すことができます。

  val columnName = Seq("col1", "col2")
  val DFFiltered = DF.select(columnName.map(name => col(name)): _*)
2
UserszrKs