Как эффективно пакетно переименовать столбцы в pyspark? - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь переименовать мои столбцы в PySpark из:

 'collect_list(Target_Met_1)[1]' --> 'AB11'
 'collect_list(Target_Met_1)[2]' --> 'AB12'
 'collect_list(Target_Met_2)[1]' --> 'AB21'
 'collect_list(Target_Met_1)[150]' --> 'AB150'

Как мне это сделать программно?Прямо сейчас я могу вручную изменить имена, используя:

df.withColumnRenamed('collect_list(Target_Met_1)[1]', 'AB11')

Но если у меня есть 500 столбцов, это неэффективно.Я понимаю, что другим способом переименовать его было бы использование чего-то вроде udf, но я не могу придумать лучший из возможных подходов.

Я разбил столбцы, и это не проблема.Проблема заключается в переименовании столбца.

1 Ответ

0 голосов
/ 21 июня 2019

Неважно. Разобрался. По сути, мне пришлось использовать понимание списка, чтобы переименовать столбцы. Я разбивал столбцы, упомянутые в ссылке выше. Вот что это сделало:

df = df.select('1', '2', '3', *[df[col][i].alias("AB" + str(i + 1) + col) for col in columns for i in range(max_dict[col])])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...