我有一个数据框有两列:unix_time和user。它有数千行,这是其中的一部分:
unix_time user
2000000000000 A
2000000000001 A
2000000000002 B
2000000000003 B
2000000000004 B
我想计算出每个用户总共花费了unix_time的时间:
1.计算行之间的时间差。例如:unix_time column (row2 - row1)
2.如果时间差来自同一用户,则求和。例如:sum(row2 - row1) and (row3 - row2)
输出将为
time_difference_sum user
1 A
2 B
我阅读了these two之类的几篇文章,但由于受到更多的限制,因此仍然很难找到解决方案。关于如何执行此操作的任何建议?谢谢你!
答案 0 :(得分:1)
您可以先使用groupby()
和diff()
,然后再使用agg()
您的结果:
df['time_difference_sum'] = df.sort_values(['user','unix_time']).groupby('user')['unix_time'].diff()
df.groupby('user').agg({'time_difference_sum': 'sum'})
收益:
time_difference_sum
user
A 1.0
B 2.0