pandas的shift和diff介绍,不同行(列)移动,做差

最近在做一个比赛,有一张表格记录的是每个用户不同时间的行为,每一次行为有一行记录。现想要求不同用户每次行为的时间差,下面为大家介绍如何实现这一需求。具体如下图所示:

⑴ 先移动到同一行,在做差

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))


猜你喜欢

转载自blog.csdn.net/lz_peter/article/details/79109185