Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将列表转换为pyspark数据帧_Python_List_Pyspark_Apache Spark Sql_Spark Dataframe - Fatal编程技术网

Python 将列表转换为pyspark数据帧

Python 将列表转换为pyspark数据帧,python,list,pyspark,apache-spark-sql,spark-dataframe,Python,List,Pyspark,Apache Spark Sql,Spark Dataframe,使用PySpark2.1,我试图找到一些预测结果,下面给出了代码 restultSet=testingData.map(lambda p: (p.label, linearModel.predict(p.features))).collect() 现在ResultSet的输出在列表中,如下所示 [(2.0, array([ 2.09078012])), (2.0, array([ 2.09078012])), (2.0, array([ 2.09078012])), (1.0, array([

使用PySpark2.1,我试图找到一些预测结果,下面给出了代码

restultSet=testingData.map(lambda p: (p.label, linearModel.predict(p.features))).collect()
现在ResultSet的输出在列表中,如下所示

[(2.0, array([ 2.09078012])), (2.0, array([ 2.09078012])), (2.0, array([ 2.09078012])), (1.0, array([ 2.09078012])), (2.0, array([ 2.09078012])), (1.0, array([ 2.09078012]))]
当我有给定类型(resultset)时,它会在下面显示结果

我正在努力从列表转换到数据帧

我试着使用下面的代码片段,但它不起作用。请帮忙

restultSet.toDF()

无法将
restultSet
转换为Spark数据帧,因为由于
collect
,它是一个Python列表,
toDF
适用于RDD

删除
collect
,然后再添加一个
map
,以将numpy数组转换为
向量。稠密的
应该可以完成这项工作

以下是您提供的数据示例:

import numpy as np
from pyspark.ml.linalg import Vectors

# your data as an RDD (i.e. before 'collect')
dd = sc.parallelize([(2.0, np.array([ 2.09078012])), (2.0, np.array([ 2.09078012])), (2.0, np.array([ 2.09078012])), (1.0, np.array([ 2.09078012])), (2.0, np.array([ 2.09078012])), (1.0, np.array([ 2.09078012]))])
dd.take(1)
# [(2.0, array([ 2.09078012]))]

df = dd.map(lambda x: (x[0], Vectors.dense(x[1]))).toDF()
df.show()
# +---+------------+ 
# | _1|          _2|
# +---+------------+
# |2.0|[2.09078012]| 
# |2.0|[2.09078012]|
# |2.0|[2.09078012]|
# |1.0|[2.09078012]|
# |2.0|[2.09078012]|
# |1.0|[2.09078012]|
# +---+------------+

要给结果列命名,请将它们作为列表参数包含在
toDF
中,即
toDF([“column\u 1”,“column\u 2”)

您无法将
restultSet
转换为Spark数据帧,因为由于
collect
,它是一个Python列表,
toDF
适用于RDD

删除
collect
,然后再添加一个
map
,以将numpy数组转换为
向量。稠密的
应该可以完成这项工作

以下是您提供的数据示例:

import numpy as np
from pyspark.ml.linalg import Vectors

# your data as an RDD (i.e. before 'collect')
dd = sc.parallelize([(2.0, np.array([ 2.09078012])), (2.0, np.array([ 2.09078012])), (2.0, np.array([ 2.09078012])), (1.0, np.array([ 2.09078012])), (2.0, np.array([ 2.09078012])), (1.0, np.array([ 2.09078012]))])
dd.take(1)
# [(2.0, array([ 2.09078012]))]

df = dd.map(lambda x: (x[0], Vectors.dense(x[1]))).toDF()
df.show()
# +---+------------+ 
# | _1|          _2|
# +---+------------+
# |2.0|[2.09078012]| 
# |2.0|[2.09078012]|
# |2.0|[2.09078012]|
# |1.0|[2.09078012]|
# |2.0|[2.09078012]|
# |1.0|[2.09078012]|
# +---+------------+

要给结果列命名,请将它们作为列表参数包含在
toDF
中,即
toDF([“column\u 1”,“column\u 2”])

我的意图是
.toDF
列表上(而不是在Rdd上)。因为它只会在scala中使用隐式。无论如何,谢谢你指出。我的意图是在
列表上
.toDf
(不在Rdd上)。因为它只会在scala中使用隐式。无论如何,谢谢你的指点。