Как сравнить даты в том же столбце на основе критериев из другого столбца в Pandas? - PullRequest
1 голос
/ 11 декабря 2019

У меня есть df с u_id, date, order, и мне нужно добавить столбец, который дает разницу в дате между каждым заказом для каждого пользователя. Например:

u_id | date       | order
001  | 2019-01-01 |  1
001  | 2019-01-10 |  2
001  | 2019-01-15 |  3
002  | 2019-05-03 |  1
002  | 2019-05-06 |  2
...

То, к чему я стремлюсь, таково:

u_id | date       | order | date_difference
001  | 2019-01-01 |  1    |    NaT
001  | 2019-01-10 |  2    |   9 days
001  | 2019-01-15 |  3    |   5 days
002  | 2019-05-03 |  1    |    NaT
002  | 2019-05-06 |  2    |   3 days
...

date_difference столбец не обязательно должен указывать дни.

I 'м используя панд с питоном 3.6.

1 Ответ

2 голосов
/ 11 декабря 2019

Вы можете сделать groupby:

df['date_difference'] = df.groupby('u_id')['date'].diff()

Или без groupby при правильном заказе:

df['date_difference'] = df.date.diff().where(df.u_id==df.u_id.shift())

Выход:

   u_id       date  order date_difference
0     1 2019-01-01      1             NaT
1     1 2019-01-10      2          9 days
2     1 2019-01-15      3          5 days
3     2 2019-05-03      1             NaT
4     2 2019-05-06      2          3 days
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...