目标是将倍数变量的NULL值替换为0。 我的代码有效,但是如果我有20个变量,则代码没有得到优化……
如何尽可能快地在PySpark中的多个列上循环?
df=df.withColumn('AGE_ENFANT1', F.when(F.col("AGE_ENFANT1") > 0,F.col("AGE_ENFANT1")).otherwise(0))
df=df.withColumn('AGE_ENFANT2', F.when(F.col("AGE_ENFANT2") > 0, F.col("AGE_ENFANT2")).otherwise(0))
df=df.withColumn('AGE_ENFANT3', F.when(F.col("AGE_ENFANT3") > 0, F.col("AGE_ENFANT3")).otherwise(0))
df=df.withColumn('AGE_ENFANT4', F.when(F.col("AGE_ENFANT4") > 0, F.col("AGE_ENFANT4")).otherwise(0))
答案 0 :(得分:1)
您可以使用:
for col in df.columns:
df.withColumn(col,foo)
但是您可能要看看:
df.na.fill(0)
更新所有列。