我在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()但它无法正常工作
答案 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
,代码的工作方式都相同。