Расчет времени pandas - PullRequest
       2

Расчет времени pandas

1 голос
/ 02 марта 2020

Мне нужно рассчитать разницу во времени, а затем назначить результаты, начиная с первой строки. Это мой код:

import pandas as pd

dtime = pd.DataFrame({'letter': ['a', 'b', 'c', 'd', 'e', 'f'], 'time': ['19/11/2019  06:02:39', '19/11/2019  06:32:39', '2019-11-19 06:42:39' , '19/11/2019  06:52:39', '19/11/2019  07:02:39', '19/11/2019  07:12:39']})
dtime['time'] = pd.to_datetime(dtime['time'])

dtime['Time_diff']=(dtime['time']-dtime['time'].shift()).fillna(0)
print (dtime)
dtime.to_excel('test_time.xlsx', 'Sheet1', index=True)

это вывод:

  letter                time Time_diff
0      a 2019-11-19 06:02:39  00:00:00
1      b 2019-11-19 06:32:39  00:30:00
2      c 2019-11-19 06:42:39  00:10:00
3      d 2019-11-19 06:52:39  00:10:00
4      e 2019-11-19 07:02:39  00:10:00
5      f 2019-11-19 07:12:39  00:10:00

но мне нужно, чтобы это было так:

  letter                time Time_diff
0      a 2019-11-19 06:02:39  00:30:00
1      b 2019-11-19 06:32:39  00:10:00
2      c 2019-11-19 06:42:39  00:10:00
3      d 2019-11-19 06:52:39  00:10:00
4      e 2019-11-19 07:02:39  00:10:00
5      f 2019-11-19 07:12:39  00:00:00

строка 0: 0 a 2019-11-19 06:02:39 00: 30: 00

Возможно ??

1 Ответ

2 голосов
/ 02 марта 2020

Измените порядок и добавьте -1 к Series.shift, также для замены пропущенных значений используйте 0 timedelta:

dtime['Time_diff']=(dtime['time'].shift(-1)-time['time']).fillna(pd.Timedelta(0))
print (dtime)
  letter                time Time_diff
0      a 2019-11-19 06:02:39  00:30:00
1      b 2019-11-19 06:32:39  00:10:00
2      c 2019-11-19 06:42:39  00:10:00
3      d 2019-11-19 06:52:39  00:10:00
4      e 2019-11-19 07:02:39  00:10:00
5      f 2019-11-19 07:12:39  00:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...