Pyspark 将 MapType 列转换为重复键

问题描述 投票:0回答:1

我有一个要转换的数据框

原始数据框:

from pyspark.sql import Row
spark.createDataFrame([
    
 Row(rules={1: [7408,4586],  2: [9670,2474] }),
    ]).show()
规则
地图 {1: [7408,4586] 2: [9670,2474]}

我想反转键值对并最终得到这样的数据框

spark.createDataFrame([
    
 Row(rules={7408:1,
            4586:1,  
            9670:2,
            2474:2 }),
    ]).show()

我怎样才能实现这个目标?

apache-spark pyspark apache-spark-sql
1个回答
0
投票

检查下面的代码。

df
.selectExpr("map_from_entries(flatten(transform(map_keys(rules), k -> transform(rules[k], v ->  struct(v, k))))) rules")
.show(false)
+--------------------------------------------+
|rules                                       |
+--------------------------------------------+
|{7048 -> 1, 4586 -> 1, 9670 -> 2, 2474 -> 2}|
+--------------------------------------------+
© www.soinside.com 2019 - 2024. All rights reserved.