15
我見過各種各樣的人暗示Dataframe.explode
是實現此目的的一種有用方法,但它會產生比原始數據幀更多的行,這不是我想要的。我只想做數據框相當於非常簡單的:將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循環,即 - 對於我在範圍內(最大(len_of_split):df = df.withcolumn(split.getItem(i)) –