Как можно написать агрегат по столбцу с groupby по другим столбцам и условия по столбцу времени? - PullRequest
0 голосов
/ 02 марта 2019

Можно ли написать агрегат в столбце с groupby в других столбцах и условия в столбце времени?

Вопрос:по группам ДАТА , ОТ и ДО , рассчитать некоторые из Пассажирские с в период -1 и +1 час Время для каждого Время ( Время находится в диапазоне 00: 00-23: 59) ([x-60, x-45, x-30, х-15, х, х + 15, х + 30, х + 45, х + 60]). набор данных представляет собой миллион строк для числа пассажиров рейсов в определенные дни и часы для определенных городов.

Date        Time   From  To  Passengers
2015/2/4   23:30   a     c   1
2015/2/4   23:45   a     c   2
2015/2/4    0:00   a     c   1
2015/2/4    0:15   a     c   2
2015/2/4    0:30   a     c   3
2015/2/4    0:45   a     c   4
2015/2/4    1:00   a     c   5
2015/2/4    1:15   a     c   6
2015/2/4    1:30   a     c   7
2015/2/4    1:45   a     c   8
2015/2/4    2:00   a     c   9
2015/2/4    2:15   a     c   10
2015/2/4    2:30   a     c   11
2015/2/4    2:45   a     c   12
2015/2/4    3:00   a     c   13
2015/2/5    2:00   b     c   14
2015/2/5    2:45   b     c   14
2015/2/5    3:15   b     c   14
2015/2/9   17:00   a     f   17
2015/2/9   18:00   a     f   18
2015/2/2    8:00   b     f   19
2015/2/3    8:30   b     f   20

Результат должен быть таким: (для каждого Дата и каждый FROM_TO , для каждого Время сумма Пассажиров от 1 часа назад до 1 часа спустя)

Date        Time   From  To  Passengers  Passengers_2Hours
2015/2/4   23:30   a     c   1            9
2015/2/4   23:45   a     c   2           13
2015/2/4    0:00   a     c   1           18
2015/2/4    0:15   a     c   2           24
2015/2/4    0:30   a     c   3           31
2015/2/4    0:45   a     c   4           38
2015/2/4    1:00   a     c   5           45
2015/2/4    1:15   a     c   6           54
2015/2/4    1:30   a     c   7           63
2015/2/4    1:45   a     c   8           72
2015/2/4    2:00   a     c   9           81
2015/2/4    2:15   a     c   10          76
2015/2/4    2:30   a     c   11          70
2015/2/4    2:45   a     c   12          63
2015/2/4    3:00   a     c   13          55
2015/2/5    2:00   b     c   14          29
2015/2/5    2:45   b     c   15          45
2015/2/5    3:15   b     c   16          31
2015/2/9   17:00   a     f   17          35
2015/2/9   18:00   a     f   18          35
2015/2/2    8:00   b     f   19          19
2015/2/3    8:30   b     f   20          20

Я написал этокод, но я знаю, что это неверно:

df['aaa'] = sub.Date.astype(str) + '_' + sub.FROM.astype(str) + '_' + sub.TO.astype(str)
df['Passengers_'] = 0

for w in df.aaa.unique():
  for x in df.Time.unique():
    z = 0
    for y in [x-100, x-75, x-50, x-25, x, x+25, x+50, x+75, x+100]:
      z = z + df.Passengers[(df.aaa == w) & (df.Time == y)]
    df.Passengers_[(df.aaa == w) & (df.Time == x)] = z

изображение набора данных

...