#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.