Учитывая, что OP подходит для столбца объекта (немного многословно):
def splitter(td):
td = str(td).split(' ')[-1:][0]
return td
df['split'] = df['timediff'].apply(splitter)
В основном мы берем столбец timedelta, преобразуем содержимое в строку, затем разделяем строку (создаем список) и берем последний элемент этого списка, который будет компонентом hh: mm: ss.
Обратите внимание, что указание ' '
для того, на что делить, здесь избыточно.
Альтернативный вкладыш:
df['split2'] = df['timediff'].astype('str').str.split().str[-1]
что очень похоже, но не очень симпатично ИМХО. Кроме того, вывод включает в себя миллисекунды, что не имеет место в первом решении. Я не уверен, что причина этого (пожалуйста, прокомментируйте, если вы делаете). Если ваши данные велики, возможно, стоит попробовать эти разные подходы.