【发布时间】:2020-01-07 15:13:18
【问题描述】:
有如下数据框:
>>> df.printSchema()
root
|-- I: string (nullable = true)
|-- F: string (nullable = true)
|-- D: string (nullable = true)
|-- T: string (nullable = true)
|-- S: string (nullable = true)
|-- P: string (nullable = true)
F 列是字典格式:
{"P1":"1:0.01","P2":"3:0.03,4:0.04","P3":"3:0.03,4:0.04",...}
我需要阅读下面的 F 列并创建两个新列 P 和 N
P1 => "1:0.01"
P2 => "3:0.03,4:0.04"
and so on
+--------+--------+-----------------+-----+------+--------+----+
| I | P | N | D | T | S | P |
+--------+--------+---------------- +------------+--------+----+
| i1 | p1 | 1:0.01 | d1 | t1 | s1 | p1 |
|--------|--------|-----------------|-----|------|--------|----|
| i1 | p2 | 3:0.03,4:0.04 | d1 | t1 | s1 | p1 |
|--------|--------|-----------------|-----|------|--------|----|
| i1 | p3 | 3:0.03,4:0.04 | d1 | t1 | s1 | p1 |
|--------|--------|-----------------|-----|------|--------|----|
| i2 | ... | .... | d2 | t2 | s2 | p2 |
+--------+--------+-----------------+-----+------+--------+----+
Pyspark 有什么建议吗?
【问题讨论】:
-
感谢您的评论。在提供的链接中,字典只有两个键。这里的字典有很多键。
-
对于这个答案,在链接中提供了架构,这是事先已知的。但就我而言,无法提供架构。这里它只有两个键,key1 和 key2。我的可能有 key1, key2, ...., key128 而不是固定数字。您如何提供灵活的架构?
-
另外,我不想为每个键添加新列,而是添加新行。它更像是一次“爆炸”。
标签: json dataframe dictionary pyspark