Использование:
rng = pd.date_range('2019-03-29 11:00:00', periods=30, freq='3H')
data = pd.DataFrame({'Time': rng, 'a': range(len(rng))})
print (data)
Time a
0 2019-03-29 11:00:00 0
1 2019-03-29 14:00:00 1
2 2019-03-29 17:00:00 2
3 2019-03-29 20:00:00 3
4 2019-03-29 23:00:00 4
5 2019-03-30 02:00:00 5
6 2019-03-30 05:00:00 6
7 2019-03-30 08:00:00 7
8 2019-03-30 11:00:00 8
9 2019-03-30 14:00:00 9
10 2019-03-30 17:00:00 10
11 2019-03-30 20:00:00 11
12 2019-03-30 23:00:00 12
13 2019-03-31 02:00:00 13
14 2019-03-31 05:00:00 14
15 2019-03-31 08:00:00 15
16 2019-03-31 11:00:00 16
17 2019-03-31 14:00:00 17
18 2019-03-31 17:00:00 18
19 2019-03-31 20:00:00 19
20 2019-03-31 23:00:00 20
21 2019-04-01 02:00:00 21
22 2019-04-01 05:00:00 22
23 2019-04-01 08:00:00 23
24 2019-04-01 11:00:00 24
25 2019-04-01 14:00:00 25
26 2019-04-01 17:00:00 26
27 2019-04-01 20:00:00 27
28 2019-04-01 23:00:00 28
29 2019-04-02 02:00:00 29
Новый столбец необязателен, создайте маску с помощью Series.dt.weekday
по сравнению с >5
, к которому добавляется |
для поразрядной OR
с другой маской - только фильтрация Fridays
с Series.dt.hour
с - с цепочкой &
для побитового AND
:
m1 = data['Time'].dt.weekday >= 5
m2 = (data['Time'].dt.weekday == 4) & (data['Time'].dt.hour >= 17)
m = m1 | m2
weekend_data = data[m]
weekday_data = data[~m]
print (weekend_data)
Time a
2 2019-03-29 17:00:00 2
3 2019-03-29 20:00:00 3
4 2019-03-29 23:00:00 4
5 2019-03-30 02:00:00 5
6 2019-03-30 05:00:00 6
7 2019-03-30 08:00:00 7
8 2019-03-30 11:00:00 8
9 2019-03-30 14:00:00 9
10 2019-03-30 17:00:00 10
11 2019-03-30 20:00:00 11
12 2019-03-30 23:00:00 12
13 2019-03-31 02:00:00 13
14 2019-03-31 05:00:00 14
15 2019-03-31 08:00:00 15
16 2019-03-31 11:00:00 16
17 2019-03-31 14:00:00 17
18 2019-03-31 17:00:00 18
19 2019-03-31 20:00:00 19
20 2019-03-31 23:00:00 20
print (weekday_data)
Time a
0 2019-03-29 11:00:00 0
1 2019-03-29 14:00:00 1
21 2019-04-01 02:00:00 21
22 2019-04-01 05:00:00 22
23 2019-04-01 08:00:00 23
24 2019-04-01 11:00:00 24
25 2019-04-01 14:00:00 25
26 2019-04-01 17:00:00 26
27 2019-04-01 20:00:00 27
28 2019-04-01 23:00:00 28
29 2019-04-02 02:00:00 29