Как я могу преобразовать файл данных в десятичную дробь времени в Python, в фрейме данных?

#python #pandas

Вопрос:

У меня есть две колонки: Время окончания выбора и Время начала выбора.

Сначала я преобразовал их в дату и время

 data['Picking Start Time'] = pd.to_datetime(data['Picking Start Time'])
data['Picking End Time'] = pd.to_datetime(data['Picking End Time'])
 

После этого я хотел посмотреть время сбора

 data['Picking Time'] = data['Picking End Time'] - data['Picking Start Time']
 

Чтобы убрать дату и иметь как раз то время, которое я использовал

 data['Picking Time'] = data['Picking Time'].astype(str).map(lambda x: x[7:])
 

Теперь моя следующая задача-преобразовать время сбора в десятичное время, но я не могу найти ничего, что могло бы помочь.

Комментарии:

1. Можете ли вы добавить образец данных и ожидаемый результат?

2. ibb.co/Br3yXxc Я хочу воспроизвести эту колонку среднего темпа. Поэтому в основном мне нужно разделить количество строк на время выбора.

Ответ №1:

Сначала удалите:

 data['Picking Time'] = data['Picking Time'].astype(str).map(lambda x: x[7:])
 

Используйте Series.dt.total_seconds и при необходимости разделите на скаляр 60 или 3600 :

 #seconds
data['Picking Time'] = data['Picking Time'].dt.total_seconds()

#minutes
data['Picking Time'] = data['Picking Time'].dt.total_seconds() / 60

#hours
data['Picking Time'] = data['Picking Time'].dt.total_seconds() / 3600
 

Комментарии:

1. Я получаю эту ошибку: AttributeError: Можно использовать только метод доступа .dt со значениями, похожими на дату

2. @Dan-AlexandruJecu — Ты удаляешь data['Picking Time'] = data['Picking Time'].astype(str).map(lambda x: x[7:]) ?

3. Идеально! Спасибо! Но я не получаю тех же значений, что и в Листах. В листах я умножал время на 24.

4. Итак, я обнаружил то, что мне нужно. Мне нужно умножить эту разницу во времени на 24.