将列附加到 pyspark 数据框中的数组
Append column to an array in a pyspark dataframe
我有一个包含 2 列的数据框
| VPN | UPC |
+--------+-----------------+
| 1 | [4,2] |
| 2 | [1,2] |
| null | [4,7] |
我需要一个结果列,其中 vpn(字符串)的值附加到数组 UPC。结果应该如下所示。
| result |
+--------+
| [4,2,1]|
| [1,2,2]|
| [4,7,] |
一种选择是使用 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,]|
+---------+
或更多 pythonic:
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,]|
+---------+
我有一个包含 2 列的数据框
| VPN | UPC |
+--------+-----------------+
| 1 | [4,2] |
| 2 | [1,2] |
| null | [4,7] |
我需要一个结果列,其中 vpn(字符串)的值附加到数组 UPC。结果应该如下所示。
| result |
+--------+
| [4,2,1]|
| [1,2,2]|
| [4,7,] |
一种选择是使用 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,]|
+---------+
或更多 pythonic:
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,]|
+---------+