создание длительности в отдельные полчаса полос Панды datetime - PullRequest
0 голосов
/ 19 ноября 2018

Нужна небольшая помощь.Работаю над следующим.Разделение строк.

введите описание изображения здесь

Ввод:

Name,  Channel,  Duration, Start_Time   
John, A, 2, 15:55:00    
John, A,    3, 15:57:00 
John,  A,  5, 16:00:00  
Joseph, B, 10, 15:25:00 

Вывод

Name, Channel,  TB, Count, Duration
John, A, 15:30:00-16:00:00,1,5
John,  A,  16:00:00-16:30:00,  1, 5
Joseph, B, 15:00:00-15:30:00, 1,    5
Joseph, B, 15:30:00-16:00:00, 1,    5

Заранее спасибо

1 Ответ

0 голосов
/ 19 ноября 2018

Использование -

df['TB'] = pd.cut(df['Start_time'], bins=pd.date_range(start='15:00:00', end='16:30:00', freq='30min'))

Вывод

    Name    Channel Duration    Start_Time  Start_time  TB
0   John    A   2   15:55:00    2018-11-19 15:55:00 (2018-11-19 15:30:00, 2018-11-19 16:00:00]
1   John    A   3   15:57:00    2018-11-19 15:57:00 (2018-11-19 15:30:00, 2018-11-19 16:00:00]
2   John    A   5   16:00:00    2018-11-19 16:00:00 (2018-11-19 15:30:00, 2018-11-19 16:00:00]
3   Joseph  B   10  15:25:00    2018-11-19 15:25:00 (2018-11-19 15:00:00, 2018-11-19 15:30:00]

Если вы хотите точный формат, выполните -

df['TB'] = pd.cut(df['Start_time'], bins=pd.date_range(start='15:00:00', end='16:30:00', freq='30min')).apply(lambda x: ' - '.join(str(x).replace('(','').replace(']','').split(',')))

Это будетдоходность -

    Name    Channel Duration    Start_Time  TB
0   John    A   2   15:55:00    2018-11-19 15:30:00 - 2018-11-19 16:00:00
1   John    A   3   15:57:00    2018-11-19 15:30:00 - 2018-11-19 16:00:00
2   John    A   5   16:00:00    2018-11-19 15:30:00 - 2018-11-19 16:00:00
3   Joseph  B   10  15:25:00    2018-11-19 15:00:00 - 2018-11-19 15:30:00
...