[英]Assign date values for null in a column in a pyspark dataframe
我有一個 pyspark dataframe:
Location Month New_Date Sales
USA 1/1/2020 1/1/2020 34.56%
COL 1/1/2020 1/1/2020 66.4%
AUS 1/1/2020 1/1/2020 32.98%
NZ null null 44.59%
CHN null null 21.13%
我從Month
列(MM/dd/yyyy 格式)創建New_Date
列。 我需要為Month
為 null 的行填充New_date
值。
這就是我嘗試過的:
df1=df.filter(col('Month').isNull()) \
.withColumn("current_date",current_date()) \
.withColumn("New_date", trunc(col("current_date"), "month"))
但我正在獲取當月的第一個日期。 我需要Month
列的第一個日期請建議任何其他方法。
Location Month New_Date Sales
USA 1/1/2020 1/1/2020 34.56%
COL 1/1/2020 1/1/2020 66.4%
AUS 1/1/2020 1/1/2020 32.98%
NZ null 1/1/2020 44.59%
CHN null 1/1/2020 21.13%
您可以first
使用 function 而不是 window:
from pyspark.sql import functions as F, Window
w = (Window.orderBy("Month")
.rowsBetween(Window.unboundedPreceding, Window.unboundedFollowing)
)
df1 = df.withColumn(
"New_date",
F.coalesce(F.col("Month"), F.first("Month", ignorenulls=True).over(w))
)
df1.show()
#+--------+--------+--------+------+
#|Location| Month|New_date| Sales|
#+--------+--------+--------+------+
#| NZ| null|1/1/2020|44.59%|
#| CHN| null|1/1/2020|21.13%|
#| USA|1/1/2020|1/1/2020|34.56%|
#| COL|1/1/2020|1/1/2020| 66.4%|
#| AUS|1/1/2020|1/1/2020|32.98%|
#+--------+--------+--------+------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.