我有一个具有多列的Dataframe,需要修改的列列表如下:[dureed_1,dureed_2,dureed_3,…,dureed_1098],我想修改每列的值,并添加多列,为此我正在执行for循环:
for i in range(2,1099):
colDureeD_i = 'dureeD_'+str(i)
colDureeD_i_1 = 'dureeD_' + str(i-1)
df_DUE_DISTRIB_DET = df_DUE_DISTRIB_DET.withColumn(colDureeD_i,when(col(colDureeD_i).isNull(),col(colDureeD_i_1)).otherwise(col(colDureeD_i)))\
.withColumn('dureepctD_'+str(i),col(colDureeD_i)/col('dureeD_1098'))
但是这个解决方案不是最优的,因为我必须在我的程序中执行这么多次,当我运行spark时,他仍然运行了很多小时。我发现我们可以使用foldleft对多个列执行操作,或者(在pyspark中reduce)遍历sparkDataframe的列并更新指定的值
但是我不知道我是否可以在我的例子中使用这个解决方案,因为我必须在每次迭代中访问前一列col('dureed\uu1'+str(i-1))
提前谢谢你的帮助
暂无答案!
目前还没有任何答案,快来回答吧!