最近在做一个比赛,有一张表格记录的是每个用户不同时间的行为,每一次行为有一行记录。现想要求不同用户每次行为的时间差,下面为大家介绍如何实现这一需求。具体如下图所示:
⑴ 先移动到同一行,在做差
pandas中shift()函数的功能是按设置的间隔,将所有列(行)移动整体向上(向下)平移,这样我们就将相近的两次行为的时间移动到了同一行,直接做差就可以得到两次行为的时间差具体如下:
action['shift(1)'] = action.groupby('userid')['actionTime'].apply(lambda i:i.shift(1)) action['diff_1'] = action['actionTime'] - action['shift(1)']
⑵直接做差
pandas中的diff()可以的功能是按设置的间隔,将当前列(行)与指定间隔行(列)做差,具体如下:
action['diff_2'] = action.groupby('userid')['actionTime'].apply(lambda i:i.diff(1))