У меня фрейм данных имеет два столбца: 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

Я прочитал несколько сообщений, например эти two , но все еще не могу найти решение, потому что у меня больше ограничений . Есть предложения о том, как я могу это сделать? Заранее благодарю!

0
Osca 3 Ноя 2018 в 02:02

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
1
rahlf23 3 Ноя 2018 в 00:07