在使用withColumn将一列添加到数据帧时,我需要将一列的值与循环迭代变量进行比较,以便将该值分配给新列。即使我的第一个或第二个条件的条件可以满足,循环也会始终运行其他条件。
我尝试使用lit(j)
for(j <- 1 to 120) {
actuarialEvaluationDF = actuarialEvaluationDF.withColumn("PolAnn(" + j + ")",
when(lit(j) === lit(1), monthAdd(col("HOISSDTE"), lit(1)))
.when(col(completeMonth) > 0 && j > 0 && expr("completeMonth > " + j) , monthAdd(col("HOISSDTE"), lit(j))) // CompleteMonth > 0 and CompleteMonth > j > 0
.otherwise(col("PolAnn(" + (j-1) + ")" ))) //TODO: Confirm
}
预期结果是,当j大于0且小于completeMonth中的列值时,monthAdd(col(“ HOISSDTE”),lit(j)))的值。当j> completeMonth列的值时,则需要返回Pol(Ann(j-1))的值。