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做同样的事情?