Попытка конвертировать объект в DateTime, получение TypeError - PullRequest
0 голосов
/ 31 января 2019

У меня есть два кадра данных (см. здесь ), которые содержат даты и время.Подробности для первого фрейма данных:

Date         object
Time         object
Channel1    float64
Channel2    float64
Channel3    float64
Channel4    float64
Channel5    float64
dtype: object

Детали для второго фрейма данных:

Date     object
Time     object
Mean    float64
STD     float64
Min     float64
Max     float64
dtype: object

Я пытаюсь преобразовать время в объект DateTime, чтобы яЗатем можно выполнить вычисление, чтобы сделать время относительно первого экземпляра времени (т. е. самое раннее время станет 0, а затем все остальные будут секундами после начала).

Когда я пытаюсь (с )здесь ):

df['Time'] = df['Time'].apply(pd.Timestamp)

Я получаю эту ошибку:

TypeError: Cannot convert input [15:35:45] of type <class 'datetime.time'> to Timestamp

Когда я пытаюсь (с здесь ):

df['Time'] = pd.to_datetime(df['Time'])

но это дает мне эту ошибку:

TypeError: <class 'datetime.time'> is not convertible to datetime

Любые предложения будут оценены.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

В конце концов, мое решение было разным для двух данных, которые у меня были.

Для первого кадра данных решение, которое объединяет столбец «Дата» с столбцом «Время», работает хорошо:

df['Date Time'] = df['Date'] + ' ' + df['Time']   

После объединения двух столбцов для преобразования его в следующий кодобъект datetime (обратите внимание, что формат = '% d /% m /% Y% H:% M:% S' часть требуется, потому что в противном случае он путает месяц / дату и использует форматирование США, т.е. думает, что 11/12 /2018 - это 12 ноября, а не 11 декабря):

df['Date Time'] = pd.to_datetime(df['Date Time'], format='%d/%m/%Y %H:%M:%S')

Для моего второго кадра данных я поднялся раньше в своем процессе обработки данных и нашел вариант, который сохраняет дату и месяц в одном столбценепосредственно.После чего следующий код преобразовал его в объект datetime:

df['Date Time'] = df['Date Time'].apply(pd.Timestamp)
0 голосов
/ 31 января 2019

причина, по которой вы получаете ошибку

TypeError: <class 'datetime.time'> is not convertible to datetime

, буквально означает, что ваш df['Time'] содержит datetime.time объект и, следовательно, не может быть преобразован в datetime.datetime или Timestampобъект, оба из которых требуют прохождения компонента date.

Решение состоит в том, чтобы объединить df['Date'] и df['Time'], а затем передать его в pd.to_datetime.Ниже приведен пример кода:

df = pd.DataFrame({'Date': ['3/11/2000', '3/12/2000', '3/13/2000'],
               'Time': ['15:35:45', '18:35:45', '05:35:45']})

df['datetime'] = pd.to_datetime(df['Date'] + ' ' + df['Time'])

Выход

        Date      Time            datetime
0  3/11/2000  15:35:45 2000-03-11 15:35:45
1  3/12/2000  18:35:45 2000-03-12 18:35:45
2  3/13/2000  05:35:45 2000-03-13 05:35:45
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...