В моем фрейме данных есть столбец, представляющий собой строку со значением, например ["value_a", "value_b"]
.
Каков наилучший способ преобразовать этот столбец в массив и взорвать его? Сейчас я делаю что-то вроде:
explode(split(col("value"), ",")).alias("value")
Но я получаю строки вроде ["awesome"
или "John"
или "Maria]"
, и ожидаемый результат должен быть awesome
, John
, Maria
(по одному элементу в строке, поэтому я использую Explode).
Пример кода для воспроизведения:
sample_input = [
{"id":1,"value":"[\"johnny\", \"maria\"]"},
{"id":2,"value":"[\"awesome\", \"George\"]"}
]
df = spark.createDataFrame(sample_input)
df.select(col("id"), explode(split(col("value"), ",")).alias("value")).show(n=10)
Вывод, сгенерированный с помощью кода выше:
+---+----------+
| id| value|
+---+----------+
| 1| ["johnny"|
| 1| "maria"]|
| 2|["awesome"|
| 2| "George"]|
+---+----------+
Ожидаемое должно быть:
+---+----------+
| id| value|
+---+----------+
| 1| johnny |
| 1| maria |
| 2| awesome|
| 2| George|
+---+----------+