Преобразовать столбец int в тип списка pyspark - PullRequest
0 голосов
/ 08 января 2019

Мой DataFrame имеет столбец num_of_items. Это поле счета. Теперь я хочу преобразовать его в тип списка из типа int.

Я попытался использовать array(col) и даже создать функцию для возврата списка, взяв значение int в качестве входных данных. Не работал

from pyspark.sql.types import ArrayType
from array import array

def to_array(x):
    return [x]

df=df.withColumn("num_of_items", monotonically_increasing_id())

DF

col_1    | num_of_items
A        |  1
B        |  2

Ожидаемый результат

col_1    | num_of_items
A        | [23]
B        | [43]

1 Ответ

0 голосов
/ 08 января 2019

Я пытался использовать массив (столбец)

Использование pyspark.sql.functions.array, кажется, работает для меня.

from pyspark.sql.functions import array
df.withColumn("num_of_items", array("num_of_items")).show()
#+-----+------------+
#|col_1|num_of_items|
#+-----+------------+
#|    A|         [1]|
#|    B|         [2]|
#+-----+------------+

и даже создание функции для возврата списка, принимая значение int в качестве входных данных.

Если вы хотите использовать созданную вами функцию, вы должны сделать ее udf и указать тип возвращаемого значения:

from pyspark.sql.types import ArrayType, IntegerType
from pyspark.sql.functions import udf, col

to_array_udf = udf(to_array, ArrayType(IntegerType()))
df.withColumn("num_of_items", to_array_udf(col("num_of_items"))).show()
#+-----+------------+
#|col_1|num_of_items|
#+-----+------------+
#|    A|         [1]|
#|    B|         [2]|
#+-----+------------+

Но желательно по возможности избегать использования udf с: См. Функции Spark и производительность UDF?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...