我也看到过类似的问题,但是却无法准确找到我需要的东西,并且一直在努力弄清楚是否可以在不使用UDF的情况下完成我想做的事情。
说我从这个数据帧开始:
+---+---+---+
| pk| a| b|
+---+---+---+
| 1| 2| 1|
| 2| 4| 2|
+---+---+---+
我希望生成的数据框看起来像
+----------------+---+
| ab| pk|
+----------------+---+
|[A -> 2, B -> 1]| 1|
|[A -> 4, B -> 2]| 2|
+----------------+---+
A
和B
是与a
和b
对应的名称(我想我可以用别名来解决这个问题,但是目前我正在使用返回{'A': column a value, 'B': column b value}
映射的UDF
是否可以使用create_map来实现此目的,或者没有UDF来实现?
答案 0 :(得分:1)
create_map
将key, value, key, value ...
作为参数,
import pyspark.sql.functions as f
df.select(
f.create_map(f.lit('A'), f.col('a'), f.lit('B'), f.col('b')).alias('ab'),
f.col('pk')
).show()
+----------------+---+
| ab| pk|
+----------------+---+
|[A -> 2, B -> 1]| 1|
|[A -> 4, B -> 2]| 2|
+----------------+---+