无法从列表中创建数据框:pyspark

a.m*_*ssa 3 python pyspark spark-dataframe

我有一个由函数生成的列表.当我print在我的列表上执行时:

print preds_labels

我获得:

[(0.,8.),(0.,13.),(0.,19.),(0.,19.),(0.,19.),(0.,19.),(0.,19.),(0.,20.),(0.,21.),(0.,23.)]
Run Code Online (Sandbox Code Playgroud)

但是当我想DataFrame用这个命令创建一个时:

df = sqlContext.createDataFrame(preds_labels, ["prediction", "label"])
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

不支持的类型:输入'numpy.float64'

如果我手动创建列表,我没有问题.你有好主意吗?

Shu*_*uan 10

pyspark使用自己的类型系统,不幸的是它不能很好地处理numpy.它适用于python类型.所以你可以手动转换numpy.float64float喜欢

df = sqlContext.createDataFrame(
    [(float(tup[0]), float(tup[1]) for tup in preds_labels], 
    ["prediction", "label"]
)
Run Code Online (Sandbox Code Playgroud)

注意pyspark然后将它们视为 pyspark.sql.types.DoubleType