您可以使用
cut
具有
timedelta
s、 用于范围使用
timedelta_range
:
df['ActualTime'] = pd.to_timedelta(df['ActualTime'].astype(str) + ':00')
b = pd.timedelta_range('0', '24:00:00', freq='30T')
lab = [ str(i)[-8:-3] + ' - '+str(j)[-8:-3] for i,j in zip(b[:-1], b[1:]) ]
df['a'] = pd.cut(df['ActualTime'], bins=b, labels=lab)
print (df)
ActualTime a
0 12:30:00 12:00 - 12:30
1 12:31:00 12:30 - 13:00
2 12:46:00 12:30 - 13:00
3 13:05:00 13:00 - 13:30
4 13:22:00 13:00 - 13:30
5 13:48:00 13:30 - 14:00
6 14:05:00 14:00 - 14:30