我有一个数据帧df,其中包含用逗号分隔的13个值。我想在df2中输入一个包含labeledPoint的dataFrame。 firt值是标签,其他十二个是功能。我使用split和select方法将带有13值的字符串分成13个值的数组。 map方法允许我创建labeledPoint。当我使用toDF()方法将RDD转换为DataFrame
时出现错误df2 = df.select(split(df[0], ',')).map(lambda x: LabeledPoint(float(x[0]),x[-12:])).toDF()
org.apache.spark.SparkException:由于阶段失败导致作业中止:
当我查看stackerror时,我发现: IndexError:元组索引超出范围。
为了做测试,我执行了:
display(df.select(split(df[0], ',')))
我在每行的数组中获得了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 :(得分:1)
错误来自索引x [0]应该被x [0] [0]替换。 所以:
df2 = df.select(split(df[0], ',')).map(lambda x: LabeledPoint(float(x[0][0]), x[0][-12:])).toDF()