在我的pyspark DataFrame中,我有两列price1
和price2
。我想根据公式result
创建一个新列((price1 - price2)/price1)
。不过,我还要检查price1
和price2
是否为空,price1
不是0
。
如何使用这些条件正确创建新列?
现在我有了这个:
df = df.withColumn("result", df["price1"]-df["price2"]/df["price1"])
答案 0 :(得分:1)
我认为你可以这样做:
df = df.withColumn("result", df["price1"]-df["price1"]/df["price2"]).fillna(0)
答案 1 :(得分:0)
如果你可以使用udf,
from pyspark.sql import functions as F
udf = F.udf(lambda x,y : 0 if x == 0 or not all((x,y)) else x-y/x)
df = df.withColumn("result", udf(df["price1"],df["price2"]))
答案 2 :(得分:0)
df = df.withColumn("result",
when(df.col("price1").isNull OR df.col("price2").isNull OR df.col("price1")==0,0)
.otherwise(df.col("price1")-df.col("price2")/df.col("price1")))
这是使用scala来完成的。