2017-08-03 84 views
0

如何在id分組之後替換pyspark中的空值? 每個ID,我需要在-20周,以取代值空值Pyspark:如何從另一行填充缺失的值

ID |week | Value 
A | -21 | null 
B | -22 | null 
B | -20 | 0.4521 
A | -22 | null 
A | -20 | 0.85678 
B | -21 | null 
C | -20 | 0.4563 
B | -19 | 0.4678 

回答

0

我對這個問題的選擇將是取出值在周-20與原數據框中加入,然後使用當在pyspark的功能。讓我們一天df是您的數據框

from pyspark.sql.functions import when 
df2 = df.filter(df.week==-20).select('ID','Value').withColumnRenamed('Value','Value2') 
df3 = df.join(df2,on=['ID'],how='left_outer') 
df4 = df3.withColumn('new_value',when(df3.Value.isNull(),df3.Value2).otherwise(df3.Value)) 
df5 = df4.select('ID','new_value').withColumnRenamed('new_value','value') 

DF5是你需要的數據框