对于pysparkDataframe,我有以下模式
root
|-- maindata: array (nullable = true)
| |-- element: array (containsNull = true)
| | |-- element: struct (containsNull = true)
| | | |-- label: string (nullable = true)
| | | |-- value: string (nullable = true)
| | | |-- unit: string (nullable = true)
| | | |-- dateTime: string (nullable = true)
给出我收到的某一行的数据 df.select(F.col("maindata")).show(1,False)
```
|[[[a1, 43.24, km/h, 2019-04-06T13:02:08.020], [TripCount, 135, , 2019-04-06T13:02:08.790],["t2", 0, , 2019-04-06T13:02:08.040], [t4, 0, , 2019-04-06T13:02:08.050], [t09, 0, , 2019-04-06T13:02:08.050], [t3, 1, , 2019-04-06T13:02:08.050], [t7, 0, , 2019-04-06T13:02:08.050],[TripCount, ,136, 2019-04-06T13:02:08.790]]
我要访问此ex中的tripcount值: `[TripCount -> 136,135 etc` ,访问此数据的最佳方法是什么?tripc存在多次,是否有任何方法可以访问,例如仅标记maindata.label等数据。。?
1条答案
按热度按时间6l7fqoea1#
我建议这样做
explode
多次将数组元素转换为单独的行,然后将struct转换为单独的列,或者使用点语法处理嵌套元素。例如:或者可以将结构的成员提取为单独的列: