如何在其他列上使用groupby在列上写聚合,在时间列上如何写条件?

时间:2019-03-01 23:57:18

标签: python pandas group-by aggregation

是否可以在列上写入 aggregate ,在另一列上写入 groupby ,在时间列上写入 conditions

问题是:按 DATE FROM TO 分组,计算一些乘客每个时间 时间的时间为-1和+1小时(时间的范围为00:00- 23:59)([x-60,x-45,x-30,x-15,x,x + 15,x + 30,x + 45,x + 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

image of dataset

0 个答案:

没有答案