0
我有一個DataFrame(df
),它的列是userid
(用戶標識),day
(當天)。pySpark,聚合複合函數(連續事件的差異)
我感興趣的是爲每個用戶計算每天他/她活躍之間的平均時間間隔。
例如,對於一個給定的用戶數據幀可以是這個樣子
userid day
1 2016-09-18
1 2016-09-20
1 2016-09-25
如果數據幀是熊貓數據框,我可以計算的數量我感興趣的是這樣的
import numpy as np
np.mean(np.diff(df[df.userid==1].day))
然而,這是非常低效的,因爲我有幾百萬個數據幀的用戶,但我相信這是可以做到這樣
df.groupby("userid").agg({"day": lambda x: np.mean(np.diff(x))})
第一個問題是我不確定這是否正常工作,因爲在應用np.mean(np.diff(x))
之前需要對日期進行排序。
第二個問題是,這是效率低下,因爲我只能在將DataFrame轉換爲Pandas DataFrame時執行此操作。
有沒有辦法與pySpark做同樣的事情?