簡體   English   中英

如何在pyspark中創建一個新列?

[英]How to create a new column in pyspark?

在我pyspark數據幀我有兩種price1price2 我想基於公式((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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM