无法从list:pyspark创建Dataframe

btqmn9zl  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(428)

我有一个由函数生成的列表。当我执行 print 在我的名单上:

print(preds_labels)

我获得:

[(0.,8.),(0.,13.),(0.,19.),(0.,19.),(0.,19.),(0.,19.),(0.,19.),(0.,20.),(0.,21.),(0.,23.)]

但是当我想创造一个 DataFrame 使用此命令:

df = sqlContext.createDataFrame(preds_labels, ["prediction", "label"])

我收到一条错误消息:
不支持的类型:类型“numpy.float64”
如果我手动创建列表,我没有问题。你有什么主意吗?

w8f9ii69

w8f9ii691#

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

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

注意,pyspark将把它们作为 pyspark.sql.types.DoubleType

相关问题