Разница элементов списка внутри фрейма данных - PullRequest
0 голосов
/ 07 июня 2018

У меня есть фрейм данных pandas со списками внутри одного из столбцов (LOG_TIMES), как я могу создать новый столбец с разницей во времени (в секундах) элементов списка?

    DATE_RECORDED           PERSON  LOG_TIMES
0   2018-03-22 11:58:23.585 JOHN    [15/03/2018 10:30:48, 15/03/2018 10:29:48, ...
1   2018-03-22 11:58:23.585 JOHN    [20/03/2018 14:28:36, 20/03/2018 14:26:36, ...

Ожидаемыйвыводом будет datafame со столбцом, отображающим разницу во времени (значения в секундах):

    DATE_RECORDED           PERSON  LOG_TIMES
0   2018-03-22 11:58:23.585 JOHN    [60, ...
1   2018-03-22 11:58:23.585 JOHN    [120, ...

1 Ответ

0 голосов
/ 07 июня 2018

Для df:

                 DATE_RECORDED PERSON                                                        LOG_TIMES
0  2018-03-22 11:58:23.585   JOHN                       [15/03/2018 10:30:48, 15/03/2018 10:29:48]
1  2018-03-22 11:58:23.585   JOHN  [20/03/2018 14:28:36, 20/03/2018 14:26:36, 20/03/2018 14:26:30]

Вам необходимо:

df['LOG_TIMES'] = df['LOG_TIMES'].apply(lambda x: list(pd.Series([dt.datetime.strptime(y.strip(), '%d/%m/%Y %H:%M:%S') for y in x[1:-1].split(',')]).diff().astype('timedelta64[s]').dropna().mul(-1)))

Вывод:

    DATE_RECORDED PERSON       LOG_TIMES
0  2018-03-22 11:58:23.585   JOHN         [60.0]
1  2018-03-22 11:58:23.585   JOHN  [120.0, 6.0]

Если df['LOG_TIMES'] уже список datetime объектов, вы можете просто использовать:

df['LOG_TIMES'].apply(lambda x: list(pd.Series(x).diff().astype('timedelta64[s]').dropna().mul(-1)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...