Bitbucket - SSH - из Windows: & ldquo; В доступе отказано (publickey). & Rdquo;

Преобразование вывода в float:

from pyspark.sql.types import DoubleType
from pyspark.sql.functions import lit, udf

def ith_(v, i):
    try:
        return float(v[i])
    except ValueError:
        return None

ith = udf(ith_, DoubleType())

Пример использования:

from pyspark.ml.linalg import Vectors

df = sc.parallelize([
    (1, Vectors.dense([1, 2, 3])),
    (2, Vectors.sparse(3, [1], [9]))
]).toDF(["id", "features"])

df.select(ith("features", lit(1))).show()

## +-----------------+
## |ith_(features, 1)|
## +-----------------+
## |              2.0|
## |              9.0|
## +-----------------+

Объяснение:

Выходные значения должны быть перезаписаны до эквивалента Java-объекты. Если вы хотите получить доступ к values (остерегайтесь SparseVectors), вы должны использовать метод item:

v.values.item(0)

, которые возвращают стандартные скаляры Python. Аналогично, если вы хотите получить доступ ко всем значениям в виде плотной структуры:

v.toArray().tolist()
-1
задан vlad.rad 29 March 2019 в 12:06
поделиться