我有一个要转换的数据框
原始数据框:
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()
我怎样才能实现这个目标?
检查下面的代码。
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}|
+--------------------------------------------+