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)) –