Widziałem różne osoby sugerujące, że Dataframe.explode
jest przydatnym sposobem, aby to zrobić, ale powoduje to więcej wierszy niż oryginalna ramka danych, co nie jest tym, czego w ogóle chcę. Ja po prostu chcę zrobić równowartość Dataframe na bardzo prosty:Podziałowa kolumna łańcucha danych Datastrame na wiele kolumn
rdd.map(lambda row: row + [row.my_str_col.split('-')])
która zaczyna coś wyglądające jak:
col1 | my_str_col
-----+-----------
18 | 856-yygrm
201 | 777-psgdg
i konwertuje go do tego:
col1 | my_str_col | _col3 | _col4
-----+------------+-------+------
18 | 856-yygrm | 856 | yygrm
201 | 777-psgdg | 777 | psgdg
Jestem świadomy pyspark.sql.functions.split()
, ale spowoduje to zagnieżdżoną kolumnę tablicy zamiast dwóch kolumn najwyższego poziomu, jak chcę.
Idealnie, chcę, aby te nowe kolumny również zostały nazwane.
czy znalazłeś rozwiązanie dla ogólnego, niejednorodnego przypadku? –
Niestety, nigdy tego nie zrobiłem. –
zakończył się przy użyciu pętli python, tj. - dla i w zakresie (max (len_of_split): df = df.withcolumn (split.getItem (i)) –