是否可以在列上写入 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