Как вставить массив numpy 2d в одну ячейку фрейма данных pyspark

#python #numpy #pyspark

#питон #тупица #пыспарк

Вопрос:

Я пытаюсь вставить весь массив numpy 2d в одну строку pyspark… кто-нибудь знает, как этого добиться?

В конечном счете, я хотел бы иметь возможность достичь нижеследующего.. где мой массив numpy находится в одной строке

введите описание изображения здесь

Я пытался использовать для этого функцию более высокого порядка, но до сих пор не смог заставить ее работать. У кого-нибудь есть какой-нибудь совет?

 import pyspark.sql.functions as f import numpy as np  df = spark.createDataFrame(np.array([[0. , 0.67235401, 0.35767577],  [0.67235401, 0. , 0.2981656 ],  [0.35767577, 0.2981656 , 0. ]]))  expr = "TRANSFORM(arrays_zip(*), x -gt; struct(*))" df = sms.withColumn('array', f.expr(expr))  df.show(truncate=False)  

Ответ №1:

Учитывая a numpy.array , он может быть преобразован в фрейм данных PySpark после преобразования массива в список python.

Рабочий Пример

 import numpy as np  np_array = np.array([[0. , 0.67235401, 0.35767577],  [0.67235401, 0. , 0.2981656 ],  [0.35767577, 0.2981656 , 0. ]])  df = spark.createDataFrame([(np_array.tolist(), )], ("array", ))  df.show(truncate=False)  

Выход

  -------------------------------------------------------------------------------------------  |array |  -------------------------------------------------------------------------------------------  |[[0.0, 0.67235401, 0.35767577], [0.67235401, 0.0, 0.2981656], [0.35767577, 0.2981656, 0.0]]|  -------------------------------------------------------------------------------------------