我正在尝试使用同一列的第一个非空值填充数据框列的空值。
我要填写的数据框如下所示,我希望“id_book”列的所有行都具有相同的编号
我尝试了以下但它仍然显示空值
w = Window.partitionBy('id_book').orderBy('id_book', 'date').rowsBetween(0,sys.maxsize)
filled_column = first(spark_df['id_book'], ignorenulls=True).over(w)
spark_df_filled = union_dias.withColumn('id_book_filled_spark', filled_column)
答案 0 :(得分:0)
窗口应该是
w = Window.orderBy('date').rowsBetween(0, Window.unboundedFollowing)
filled_column = first(spark_df['id_book'], ignorenulls=True).over(w)
spark_df_filled = spark_df.withColumn('id_book_filled_spark', filled_column)
因为您不想按 id_book
进行分区。也没有必要按 id_book
排序,因为只有日期的顺序才重要。
另外我认为更好的做法是使用 Window.unboundedFollowing
而不是 sys.maxsize
。