I have a dataframe with a column of datetime type that I'd like to create a 2nd categorical column based upon. The second column should consist of string identifiers using the following logic:
ON: [16:00-09:30)
FH: [09:30-10:00)
M: [10:00-15:00)
SLH: [15:00-15:30)
LH: [15:30-16:00)
For instance, for dataframe d:
date_rng = pd.date_range(start='2024-01-01', periods=48, freq='30min')
d = pd.DataFrame({'datetime': date_rng})
I'd like the output below:
d.head(40)
Out[186]:
datetime part
0 2024-01-01 00:00:00 ON
1 2024-01-01 00:30:00 ON
2 2024-01-01 01:00:00 ON
3 2024-01-01 01:30:00 ON
4 2024-01-01 02:00:00 ON
5 2024-01-01 02:30:00 ON
6 2024-01-01 03:00:00 ON
7 2024-01-01 03:30:00 ON
8 2024-01-01 04:00:00 ON
9 2024-01-01 04:30:00 ON
10 2024-01-01 05:00:00 ON
11 2024-01-01 05:30:00 ON
12 2024-01-01 06:00:00 ON
13 2024-01-01 06:30:00 ON
14 2024-01-01 07:00:00 ON
15 2024-01-01 07:30:00 ON
16 2024-01-01 08:00:00 ON
17 2024-01-01 08:30:00 ON
18 2024-01-01 09:00:00 FH
19 2024-01-01 09:30:00 FH
20 2024-01-01 10:00:00 M
21 2024-01-01 10:30:00 M
22 2024-01-01 11:00:00 M
23 2024-01-01 11:30:00 M
24 2024-01-01 12:00:00 M
25 2024-01-01 12:30:00 M
26 2024-01-01 13:00:00 M
27 2024-01-01 13:30:00 M
28 2024-01-01 14:00:00 M
29 2024-01-01 14:30:00 M
30 2024-01-01 15:00:00 SLH
31 2024-01-01 15:30:00 LH
32 2024-01-01 16:00:00 ON
33 2024-01-01 16:30:00 ON
34 2024-01-01 17:00:00 ON
35 2024-01-01 17:30:00 ON
36 2024-01-01 18:00:00 ON
37 2024-01-01 18:30:00 ON
38 2024-01-01 19:00:00 ON
39 2024-01-01 19:30:00 ON
ON,FH, etc. and later you could usedf['part'] = df['datetime'].apply(your_function)2024-01-01 09:00:00the above incorrectly has'FH'. Should be'ON'.