У меня есть такие данные:
- userID sessionID time
- "" xxx 2019-06-01
- "" xxx 2019-06-02
- user1 xxx 2019-06-03
- "" ггг 2019-06-04
- user2 ггг 2019-06-05
- "" ггг 2019-06-06
- user3 ггг 2019-06-07
То, что я хочу:
- userID sessionID time
- user1 xxx2019-06-01
- user1 xxx 2019-06-02
- user1 xxx 2019-06-03
- user2 ггг 2019-06-04
- user2 yyy 2019-06-05
- user3 yyy 2019-06-06
- user3 yyy 2019-06-07
Могу ли я группировать по seesionID и применятьUDF для каждой группы и получить userID каждой строки в каждом сеансе.
update: я решил это, заменив пустую строку на null, а затем:
from pyspark.sql import Window
from pyspark.sql.functions import first
import sys
# define the window
window = Window.partitionBy('jsession')\
.orderBy('request_time')\
.rowsBetween(0, sys.maxsize)
# define the forward-filled column
filled_column = first(df['userid'], ignorenulls=True).over(window)
# do the fill
df = df.withColumn('filled_userid', filled_column)