如何用pyspark中该列的第一个非空值填充该列的空值

dced5bon  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(323)

我试图用同一列的第一个非空值来填充dataframe列的空值。
我要填写的数据框如下所示,并且我希望“id\u 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)
6ss1mwsb

6ss1mwsb1#

Windows应该是

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 .

相关问题