Как рассчитать разницу между датой и временем внутри группы в Python? - PullRequest
0 голосов
/ 11 января 2019

У меня есть df, отсортированные по AccountID и PurchaseDate. Я хочу вычислить и создать новый столбец разницы между PurchaseDate в каждой группе AccountID.

AccountID       PurchaseDate                 Price
| 113        2018-09-01 22:56:30              13|
| 113        2018-09-02 22:56:30              19|
| 114        2018-09-01 22:56:30              20|
| 114        2018-09-03 22:56:30              25|

до

AccountID       PurchaseDate                 Price          DateDiff
| 113        2018-09-01 22:56:30              13              null|
| 113        2018-09-02 22:56:30              19               1  |
| 114        2018-09-01 22:56:30              20              null|
| 114        2018-09-03 22:56:30              25               2  |

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Вот полный пример того, как вы могли бы сделать это:

import pandas as pd

df = pd.DataFrame({'AccountID': [113, 113, 114, 114],
                   'PurchaseDate': ['2018-09-01 22:56:30',
                                    '2018-09-02 22:56:30',
                                    '2018-09-01 22:56:30',
                                    '2018-09-03 22:56:30'],
                   'Price': [13, 19, 20, 25]})

df['PurchaseDate'] = pd.to_datetime(df['PurchaseDate'])
df['DateDiff'] = df.groupby('AccountID').PurchaseDate.diff().fillna(0)
#    AccountID  Price        PurchaseDate DateDiff
# 0        113     13 2018-09-01 22:56:30   0 days
# 1        113     19 2018-09-02 22:56:30   1 days
# 2        114     20 2018-09-01 22:56:30   0 days
# 3        114     25 2018-09-03 22:56:30   2 days

Открыть для комментариев.

0 голосов
/ 11 января 2019

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

df['DateDiff'] = df.groupby('AccountID')['PurchaseDate'].\
                    diff().apply(lambda x: x.days)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...