遍历sparkDataframe的列,并用前一列更新列值

pw9qyyiw  于 2021-05-16  发布在  Spark
关注(0)|答案(0)|浏览(267)

我有一个具有多列的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))
提前谢谢你的帮助

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题