2016-08-03 11 views
0

)データフレームdfには13個の値がカンマで区切られています。私は、labelPointを含むdataFrameをdf2に入れたいと思います。ファー値はラベル、12はフィーチャーです。私はsplitとselectメソッドを使用して、13の値を持つ文字列を13の値の配列に分割します。 mapメソッドを使用すると、labeledPointを作成できます。私は私が見つけるstackerrorで見たときLabeledPointのRDDをDataFrameに変換するエラー(

:仕事によるステージ障害のために中止さ: 私はorg.apache.spark.SparkException

df2 = df.select(split(df[0], ',')).map(lambda x: LabeledPoint(float(x[0]),x[-12:])).toDF() 
DATAFRAME

にRDDを変換するtoDF()メソッドを使用するとエラーが来ますIndexError:タプルのインデックスが範囲外です。

試験を行うために、私が実行:

display(df.select(split(df[0], ','))) 

iは各列の配列で私13の値を得る:

["2001.0","0.884123733793","0.610454259079","0.600498416968","0.474669212493","0.247232680947","0.357306088914","0.344136412234","0.339641227335","0.600858840135","0.425704689024","0.60491501652","0.419193351817"] 

任意のアイデア?

+0

どのようにCSVをDataframeにロードしましたか?私の意見では、エラーは分割(df [0]、 '、')である可能性があります。 1つの列しか使用していないようです。 –

+0

'x [-12:]'がエラーを出しました。実際に 'split'の後に13個の値があることを確認してください。 – ShuaiYuan

+0

私の投稿を再編集します。私はこのコマンドの表示をテストします(df.select(split(df [0]、 '、')))私はポストで言ったように、正しく私の13の値を取得します... –

答えて

1

インデックスx [0]から来るエラーは、x [0] [0]で置き換える必要があります。 So:

df2 = df.select(split(df[0], ',')).map(lambda x: LabeledPoint(float(x[0][0]), x[0][-12:])).toDF() 
関連する問題