Я видел различных людей, предлагающих, что Dataframe.explode
- полезный способ сделать это, но это приводит к большему количеству строк, чем исходный фреймворк данных, чего я совсем не хочу. Я просто хочу сделать эквивалент Dataframe очень простым:
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()
, но это приводит к столбцу вложенного массива вместо двух столбцов верхнего уровня, как я хочу.
В идеале я хочу, чтобы эти новые столбцы также были названы.