У меня есть следующий фрейм данных
import pandas as pd
import numpy as np
IDs = ['A','A','A','B','B']
times = pd.date_range(start='01/01/2019',end='01/02/2019',freq='h')
times_2 = pd.date_range(start='01/01/2019',end='01/02/2019',freq='h') + pd.Timedelta('15min')
Vals = [np.random.randint(15,250) for x in enumerate(times)]
df = pd.DataFrame({'id' : IDs*5,
'Start' : times,
'End' : times_2,
'Value' : Vals},columns=['id','Start','End','Value'])
Это дает мне df следующим образом.
print(df.head(5))
id Start End Value
0 A 2019-01-01 00:00:00 2019-01-01 00:15:00 52
1 A 2019-01-01 01:00:00 2019-01-01 01:15:00 69
2 A 2019-01-01 02:00:00 2019-01-01 02:15:00 209
3 B 2019-01-01 03:00:00 2019-01-01 03:15:00 163
4 B 2019-01-01 04:00:00 2019-01-01 04:15:00 70
Теперь я пытаюсь применить group by
кМой фрейм данных, чтобы получить сумму столбца значения, однако, делая это, я хотел бы сохранить минимальное время начала и максимальное время моего df.
, поэтому мой пример вывода будет следующим:
id Start End Value
0 A 2019-01-01 00:00:00 2019-01-01 22:15:00 2007
1 B 2019-01-01 03:00:00 2019-01-02 00:15:00 1385
Единственный способ, которым я вроде как сделал эту работу, - передать минимальный и максимальный значения каждого уникального идентификатора по времени начала и окончания, передать их в список, а затем вручную создать время начала и окончания, ноэто было медленно и грязно и подвержено ошибкам ... надеясь, что кто-то здесь может подсказать мне, что я пропускаю.