У меня есть DataFrame с 6 строковыми столбцами, названными как 'Spclty1' ... 'Spclty6' и еще 6 названными как 'StartDt1' ... 'StartDt6'.Я хочу сжать их и свернуть в столбцы, которые выглядят так: [[Spclty1, StartDt1]...[Spclty6, StartDt6]]
Сначала я попытался свернуть только столбцы 'Spclty' в список, подобный этому:
DF = DF.withColumn('Spclty', list(DF.select('Spclty1', 'Spclty2', 'Spclty3', 'Spclty4', 'Spclty5', 'Spclty6')))
Thisсработал в первый раз, когда я его выполнил, дав мне новый столбец под названием «Spclty», содержащий строки, такие как ['014', '124', '547', '000', '000', '000']
, как и ожидалось.
Затем я добавил строку в свой скрипт, чтобы сделать то же самое надругой набор из 6 строковых столбцов с именем 'StartDt1' ... 'StartDt6':
DF = DF.withColumn('StartDt', list(DF.select('StartDt1', 'StartDt2', 'StartDt3', 'StartDt4', 'StartDt5', 'StartDt6'))))
Это вызвало AssertionError: col should be Column
.
После того, как у меня закончились попытки, я снова попробовал исходную операцию (в качестве проверки работоспособности):
DF.withColumn('Spclty', list(DF.select('Spclty1', 'Spclty2', 'Spclty3', 'Spclty4', 'Spclty5', 'Spclty6'))).collect()
и получил ошибку подтверждения, как указано выше.
Итак, было бы хорошо понять, почему это сработало только в первый раз (только), но главный вопрос: как правильно заархивировать столбцы в коллекцию dict-подобных элементов в Spark?