Я видел разных людей, предлагающих, что Dataframe.explode
- полезный способ сделать это, но в результате получается больше строк, чем исходный фреймворк, что совсем не то, что я хочу. Я просто хочу, чтобы сделать Dataframe эквивалент очень прост:Разделите колонку строки данных Split Spark на несколько столбцов
rdd.map(lambda row: row + [row.my_str_col.split('-')])
который принимает что-то выглядит как:
col1 | my_str_col
-----+-----------
18 | 856-yygrm
201 | 777-psgdg
и преобразует его к этому:
col1 | my_str_col | _col3 | _col4
-----+------------+-------+------
18 | 856-yygrm | 856 | yygrm
201 | 777-psgdg | 777 | psgdg
Я знаю pyspark.sql.functions.split()
, но это приводит к столбцу вложенного массива вместо двух столбцов верхнего уровня, как я хочу.
В идеале я хочу, чтобы эти новые столбцы также были названы.
Вы нашли решение для общего неравномерного случая? –
К сожалению, я так и не сделал. –
закончил использование цикла python, то есть - для i в диапазоне (max (len_of_split): df = df.withcolumn (split.getItem (i)) –