Преобразуйте несколько столбцов в Datetime одновременно, сохраняя только время

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

При попытке изменить несколько столбцов на один и тот же тип данных одновременно, столбцы содержат данные о времени, такие как часы, минуты и секунды, например, и данные

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

и я не могу изменить сразу несколько столбцов на использование pd.to_datetime только формата времени, мне не нужна дата, потому что, если я это сделаю pd.to_datetime , дата также будет добавлена в столбец, который не требуется, просто нужно время, как преобразовать столбец в DateTime и сохранить время только в формате времени.столбец

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

1. У вас не может быть столбца DateTime, в котором указано только время.

Ответ №1:

Во-первых, в pandas / python не может быть datetime, в котором указано только время.

Итак

Поскольку время python является объектом в pandas, преобразуйте все столбцы в datetimes (но есть и даты):

 cols = ['Total Break Time','col1','col2']
df[cols] = df[cols].apply(pd.to_datetime)
 

Или преобразование столбцов в timedeltas, это выглядит как похожие времена, но возможна работа с помощью методов, подобных datetimelike в pandas:

 df[cols] = df[cols].apply(pd.to_timedelta)
 

Ответ №2:

Вы можете выбрать только time , как показано ниже:

 import time
df['Total Break Time'] = pd.to_datetime(df['Total Break Time'],format= '%H:%M:%S' ).dt.time
 

Затем вы можете повторить это для всех своих столбцов, как я полагаю, вы уже делаете.

Загвоздка в том, чтобы преобразовать datetime , а затем выбрать только то, что вам нужно.

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

1. даже после этого тип данных по-прежнему остается объектом

2. @SanchayBhargava — Да, это ожидаемо, время — это объект в pandas

3. Я думал, что буду отображать DateTime как тип данных, спасибо @jezrael

4. @SanchayBhargava вы хотите, чтобы это была строка или что-то в этом роде? Каким вы хотите, чтобы тип данных был?

5. @jezrael что, если у меня есть фрейм данных с 450 столбцами, содержащими объекты datetime? Если я делаю df[‘col’].dt.time, это работает, но если я делаю df.dt.time или df.values.dt.time, я получаю ошибки (ошибка 1: у объекта ‘DataFrame’ нет атрибута ‘dt’ ошибка 2: у объекта ‘numpy.ndarray’ нет атрибута ‘dt’).атрибут ‘dt’)