pandas 计算每个用户2个相邻数据点的时间差

vq8itlhq  于 2022-12-25  发布在  其他
关注(0)|答案(1)|浏览(117)

我有以下 Dataframe :

df = pd.DataFrame(
    {'user_id': [53, 53, 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, 54, 54], 
     'timestamp': [10, 15, 20, 25, 30, 31, 34, 37, 14, 16, 18, 20, 22, 25, 28], 
     'activity': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
                  'D', 'D', 'D', 'D', 'D', 'D', 'D']}
)
df
    user_id     timestamp   activity
0    53            10         A
1    53            15         A
2    53            20         A
3    53            25         A
4    53            30         A
5    53            31         A
6    53            34         A
7    53            37         A
8    54            14         D
9    54            16         D
10   54            18         D
11   54            20         D
12   54            22         D
13   54            25         D
14   54            28         D

我想计算每个user_id中每两个相邻数据点(行)之间的时间差,并绘制每个activity的CDF。假设每个用户从0秒开始新的活动。timestamp列表示unix时间戳,为简洁起见,我给出了最后两位数字。
目标值df(所需结果):

user_id     timestamp   activity    timestamp_diff
0    53           10          A              0
1    53           15          A              5
2    53           20          A              5
3    53           25          A              5
4    53           30          A              5
5    53           31          A              1
6    53           34          A              3
7    53           37          A              3
8    54           14          D              0
9    54           16          D              2
10   54           18          D              2
11   54           20          D              2
12   54           22          D              2
13   54           25          D              3
14   54           28          D              3

我的尝试(计算时差):
一个三个三个一个
我无法到达目标,diff1, diff2diff3列都与timestamp_diff不匹配。

06odsfpq

06odsfpq1#

您正在寻找的页面

df['timestamp_diff'] = df.groupby('user_id')['timestamp'].diff().fillna(0).astype(int)

相关问题