在多个动态列中拆分pyspark dataframe列

时间:2019-08-12 03:01:50

标签: python pyspark

我有1000列的数据框,我想用定界符从中拆分600列,并为每个列创建新列。 例如“ a | b | c | d” 然后会在数据框中创建4个新列。

我已经完成了一些代码,但是太慢了。

这将被调用以拆分列并返回通过列列表和数据框的新数据框以应用功能

def split_columns_in_pipe(columns,hitDF):
    try:
        for col_name in columns:
            split_col = split(col(col_name), "\\|")
            new_column_name = col_name + '_split'
            hitDF = hitDF.withColumn(new_column_name, split_col)
            column_size = hitDF.select(max(size(hitDF[new_column_name]))).collect()[0][0]
            print(col_name,column_size)
            hitDF = hitDF.drop(new_column_name)
            if column_size > 1:
                for i in range(column_size):
                    split_column_name = "{}_{}".format(col_name, i + 1)
                    hitDF = hitDF.withColumn(split_column_name, split_col.getItem(i))
                hitDF.drop(col_name)
        return hitDF
    except Exception as ex:
        print("Exception spliting column-{}".format(str(ex)))




hitDF = split_columns_in_pipe(columns_list,hitDF)

请帮助我在最短的时间内实现这一目标。

0 个答案:

没有答案