【问题标题】:Sparse vector to dataframe in pyspark稀疏向量到pyspark中的数据框
【发布时间】:2018-04-09 15:05:12
【问题描述】:

我在 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() 但它不起作用

【问题讨论】:

  • 你能用MVCE更新你的问题吗?

标签: apache-spark pyspark


【解决方案1】:

您的示例数组格式不正确,因为您指定了 5 个级别,因此不能有索引 5。修复该问题后,您可以简单地调用 toArray(),它将返回一个 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 还是pyspark.ml.linalg.SparseVector,代码的工作原理都是一样的。

【讨论】:

    猜你喜欢
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 2019-08-03
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    相关资源
    最近更新 更多