2017-07-27 9 views
0

異なるタイプの列を持つDataFrameがあります。それらの列の中で、私はそのDataFrameから特定の列を取得する必要があります。 LEBEL_COLUMNとFEATURE_COLsがダイナミックになりますSpark Scala DataFrameの動的列選択

val logRegrDF = myDF.select(myDF("LEBEL_COLUMN").as("label"), 
col("FEATURE_COL1"), col("FEATURE_COL2"), col("FEATURE_COL3"), col("FEATURE_COL4")) 

: ハードDATAFRAME select文は次のようになりますコード化されました。 は、私はこのようなものを機能のカラムのための配列または配列を持っている:

val FEATURE_COL_ARR = Array("FEATURE_COL1","FEATURE_COL2","FEATURE_COL3","FEATURE_COL4") 

私は第二の部分でそのSELECT文を使用して、列コレクションのこの配列を使用する必要があります。 選択では、第1列は1(LABEL_COLUMN)になり、残りは動的リストになります。

SCALAでselect文を使用できるように助けてください。

注: 怒鳴るを与えられたサンプルコードは、働いているが、私はSELECT

val colNames = FEATURE_COL_ARR.map(name => col(name)) 
val logRegrDF = myDF.select(colNames:_*) // it is not the requirement 

の第二の部分に列配列を追加する必要があり、私は第二の部分のコードを考えていますが、このようになります動作していない:私はあなたの質問を理解していれば

val logRegrDF = myDF.select(myDF("LEBEL_COLUMN").as("label"), colNames:_*) 

答えて

1

が、私はこれがあなたが

捜しているものであると思います

これが役に立ちます。

+0

こんにちは@シャンカール、ありがとう。 あなたの与えられた提案が動作していない、しかし、私はあなたの提案からアイデアを得たと ヴァルallColumnsArr =「LEBEL_COLUMN」+この方法で問題を解決したものの:FEATURE_COLUMNS ヴァルCOLNAMES = allColumnsArr.map(名=> COL(名)) myDF.select(colNames:_ *).ColumnRenamed( "LEBEL_COLUMN"、 "label") –

+1

答えを更新しました。あなたは列を必要とせず、文字列も引数として受け入れられます。 –

+0

はい、これは機能します。 \t result.select( "LEBEL_COLUMN"、FEATURE_COL_ARR:_ *).withColumnRenamed( "LEBEL_COLUMN"、 "label") –

0

ありがとう@Shankar。

あなたの与えられた提案が動作していない、しかし、私はあなたの提案からアイデアを得て、データフレームの列を作成することなく、このよう

また
val allColumnsArr = "LEBEL_COLUMN" +: FEATURE_COL_ARR 
val colNames = allColumnsArr.map(name => col(name)) 
myDF.select(colNames:_*).withColumnRenamed("LEBEL_COLUMN", "label") 

この方法で問題を解決したものの:

result.select(LEBEL_COLUMN, FEATURE_COL_ARR: _*) .withColumnRenamed(LEBEL_COLUMN, "label") 
+0

result.select( "LEBEL_COLUMN"、FEATURE_COL_ARR:_ *) .withColumnRenamed( "LEBEL_COLUMN"、 "label") この方法でもうまくいきます。 –

関連する問題