У меня есть следующий текстовый файл с 2 столбцами:
Date, Time
2013/1/4, 07:00:00.0
2013/1/4, 07:00:00.1
2013/1/4, 07:00:00.2
2013/1/4, 07:00:00.3
2013/1/4, 07:00:00.4
2013/1/4, 07:00:00.5
2013/1/4, 07:00:00.6
2013/1/4, 07:00:00.7
2013/1/4, 07:00:00.8
2013/1/4, 07:00:00.9
2013/1/4, 07:00:00.10
2013/1/4, 07:00:00.11
2013/1/4, 07:00:00.12
2013/1/4, 07:00:00.13
2013/1/4, 07:00:00.14
2013/1/4, 07:00:00.15
2013/1/4, 07:00:00.16
Мне нужно преобразовать объект в формат времени. Для используемой «даты» (и она работает, как ожидалось):
df['Date'] = pd.to_datetime(df['Date'])
В течение «времени», за которым я следил (все провалилось, и да, я пытался найти и прочитать документацию по пандам)
df['Time']= (pd.to_datetime(df['Time'].str.strip(), format='%H:%M:%S:%F'))
df['Time'] = datetime.time(df['Time'], '%H:%M:%S,%f')
df['Time'] = datetime.datetime.strptime("%H:%M:%S,%f").timestamp()
даже пробовал это:
df['DateTime'] = pd.to_datetime(df.pop('Date')) + pd.to_timedelta(df.pop('Time'))
Пожалуйста, посоветуйте, что я здесь сделал не так, чтобы завершить отсчет времени. Ваша помощь очень ценится!
Я также заметил, что вы, кажется, не пробовали использовать точку между %S и %F или %f.
df ['Time'] = pd.to_datetime (df ['Time'], format = '% H:% M:% S.% f'). dt.time преобразует столбец в объект. это то, что вы искали? если вы хотите иметь свойство отметки времени, вы можете сделать что-то вроде pd.to_datetime (df ['Time'], format = '% H:% M:% S.% f'). apply (pd.Tim eStamp)
теперь это объект, который пытается преобразовать в float64. при попытке «pd.to_datetime (df ['Time'], format = '% H:% M:% S.% f'). apply (pd.Ti meStamp)» я получаю сообщение об ошибке: KeyError: 'Time '
KeyError: Time означает, что df не имеет ключа со значением «Время». Это не имеет ничего общего со строками формата.
при использовании df.set_index ('Time', inplace = True) я получаю ту же ошибку. как я могу без ошибок установить время как индекс?






Вероятно, проще объединить столбцы в виде строк, превратить их в объекты даты / времени, а затем манипулировать ими дальше (при необходимости).
По вашим данным у меня работает следующее:
pd.to_datetime(df.Date + ' ' + df.Time)
(Обратите внимание, что df.Date + ' ' + df.Time создает серию строк в формате, который понимает pandas, в вашем случае.)
Чтобы получить час, например:
df['foo'] = pd.to_datetime(df.Date + ' ' + df.Time)
df.foo.dt.hour
Рад видеть тебя снова!
Я получаю сообщение об ошибке: «TypeError: тип данных« datetime »не распознан». любая идея? как мне получить полный рабочий день (включая миллисекунды), а не только часы? df.foo.dt.milliseconds?
@Giladbi Какая строка выдает ошибку: та, что в моем ответе, или что-то после? Погуглите ошибку, похоже, это то, что может решить обновление pandas и numpy. Про «полный рабочий день (включая миллисекунды)» - полный рабочий день в день, полный рабочий день с эпохи или что-то еще?
Если у вас есть секунда, пожалуйста, подумайте о том, чтобы взвесить мой пост здесь: stackoverflow.com/questions/53927460/… спасибо :)
@AmiTavory эта строка: «df ['foo'] = pd.to_datetime (df.Date + '' + df.Time)» и ошибка: TypeError: тип данных «datetime» не распознан. Я также обновил pandas и numpy до последних
Я заметил, что все ваши 3 попытки используют разные строки формата, что означает, что трудно сказать, является ли это техникой или строкой.