使用数组的数组分解列 - PySpark
Explode column with array of arrays - PySpark
我有一列包含这样的数据:
[[[-77.1082606, 38.935738]] ,Point]
我希望它像这样拆分:
column 1 column 2 column 3
-77.1082606 38.935738 Point
这怎么可能使用 PySpark 或 Scala (Databricks 3.0)?我知道如何分解列但不拆分这些结构。谢谢!!!
编辑:这是列的架构:
|-- geometry: struct (nullable = true)
| |-- coordinates: string (nullable = false)
| |-- type: string (nullable = false
可以使用regexp_replace()
去掉方括号,然后split()
将结果字符串用逗号分列。
from pyspark.sql.functions import regexp_replace, split, col
df.select(regexp_replace(df.geometry.coordinates, "[\[\]]", "").alias("coordinates"),
df.geometry.type.alias("col3")) \
.withColumn("arr", split(col("coordinates"), "\,")) \
.select(col("arr")[0].alias("col1"),
col("arr")[1].alias("col2"),
"col3") \
.drop("arr") \
.show(truncate = False)
+-----------+----------+-----+
|col1 |col2 |col3 |
+-----------+----------+-----+
|-77.1082606| 38.935738|Point|
+-----------+----------+-----+
我有一列包含这样的数据:
[[[-77.1082606, 38.935738]] ,Point]
我希望它像这样拆分:
column 1 column 2 column 3
-77.1082606 38.935738 Point
这怎么可能使用 PySpark 或 Scala (Databricks 3.0)?我知道如何分解列但不拆分这些结构。谢谢!!!
编辑:这是列的架构:
|-- geometry: struct (nullable = true)
| |-- coordinates: string (nullable = false)
| |-- type: string (nullable = false
可以使用regexp_replace()
去掉方括号,然后split()
将结果字符串用逗号分列。
from pyspark.sql.functions import regexp_replace, split, col
df.select(regexp_replace(df.geometry.coordinates, "[\[\]]", "").alias("coordinates"),
df.geometry.type.alias("col3")) \
.withColumn("arr", split(col("coordinates"), "\,")) \
.select(col("arr")[0].alias("col1"),
col("arr")[1].alias("col2"),
"col3") \
.drop("arr") \
.show(truncate = False)
+-----------+----------+-----+
|col1 |col2 |col3 |
+-----------+----------+-----+
|-77.1082606| 38.935738|Point|
+-----------+----------+-----+