将列表转换为 pyspark 数据框
Transforming a list into pyspark dataframe
使用pyspark 2.1,我试图找到一些预测结果,代码如下
restultSet=testingData.map(lambda p: (p.label, linearModel.predict(p.features))).collect()
现在 restultSet 的输出在列表中,如下所示
[(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 数组转换为 Vectors.dense
应该可以完成这项工作。
这是您提供的数据的示例:
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_1", "column_2"])
。
使用pyspark 2.1,我试图找到一些预测结果,代码如下
restultSet=testingData.map(lambda p: (p.label, linearModel.predict(p.features))).collect()
现在 restultSet 的输出在列表中,如下所示
[(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 数组转换为 Vectors.dense
应该可以完成这项工作。
这是您提供的数据的示例:
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_1", "column_2"])
。