[英]How to create a new column in pyspark?
在我pyspark數據幀我有兩種price1
和price2
。 我想基於公式((price1 - price2)/price1)
創建一個新的列result
。 不過,我想也來檢查,無論是price1
也不price2
是空的,而且price1
不是0
。
如何使用這些條件正確創建新列?
現在我有這個:
df = df.withColumn("result", df["price1"]-df["price2"]/df["price1"])
我認為您可以這樣操作:
df = df.withColumn("result", df["price1"]-df["price1"]/df["price2"]).fillna(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"]))
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可以完成的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.