Добавить столбец в массив в фрейме данных pyspark - PullRequest
0 голосов
/ 23 января 2020

У меня есть Dataframe, содержащий 2 столбца

| VPN    | UPC             |
+--------+-----------------+
| 1      | [4,2]           |
| 2      | [1,2]           |
| null   | [4,7]           |

Мне нужен столбец результата со значениями vpn (строка), добавленными в массив UP C. результат должен выглядеть примерно так ниже:

| result |
+--------+
| [4,2,1]|
| [1,2,2]|
| [4,7,] |

1 Ответ

0 голосов
/ 23 января 2020

Один из вариантов - использовать concat + array. Сначала используйте array для преобразования VPN столбца в тип массива, затем объедините два столбца массива методом concat:

df = spark.createDataFrame([(1, [4, 2]), (2, [1, 2]), (None, [4, 7])], ['VPN', 'UPC'])

df.show()
+----+------+
| VPN|   UPC|
+----+------+
|   1|[4, 2]|
|   2|[1, 2]|
|null|[4, 7]|
+----+------+

df.selectExpr('concat(UPC, array(VPN)) as result').show()
+---------+
|   result|
+---------+
|[4, 2, 1]|
|[1, 2, 2]|
|  [4, 7,]|
+---------+

или более pythoni c:

from pyspark.sql.functions import array, concat

df.select(concat('UPC', array('VPN')).alias('result')).show()
+---------+
|   result|
+---------+
|[4, 2, 1]|
|[1, 2, 2]|
|  [4, 7,]|
+---------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...