稀疏矢量到pyspark中的数据帧

时间:2018-04-09 15:05:13

标签: apache-spark pyspark

我在pyspark中有sparsevector,看起来像这样

SparseVector(5,{1:5,2:3,3:5,4:3,5:2})

如何将其转换为pandas数据帧,其中包含两个类似

的列
ID VALUE
1   5
2   3
3   5
4   3
5   2

我尝试了sparsevector.zipWithIndex()但它无法正常工作

1 个答案:

答案 0 :(得分:1)

您的示例数组格式不正确,因为您已指定了5个级别,因此无法建立索引5.解决该问题后,您只需调用toArray()即可返回{{1} }。只需将其传递给numpy.ndarray的构造函数。

pandas.DataFrame

无论您是使用from pyspark.mllib.linalg import SparseVector # code works the same #from pyspark.ml.linalg import SparseVector # code works the same import pandas as pd a = SparseVector(5,{0:5,1:3,2:5,3:3,4:2}) # note the index starts at 0 df = pd.DataFrame(a.toArray()) print(df) # 0 #0 5.0 #1 3.0 #2 5.0 #3 3.0 #4 2.0 还是pyspark.mllib.linalg.SparseVector,代码的工作方式都相同。