我有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)
请帮助我在最短的时间内实现这一目标。