У меня есть проблема, которая по-разному обсуждалась на других страницах stackoverflow, но я не могу найти решение, которое может решить мою странную проблему.У меня есть файл Excel (.xlsx), который я читаю и храню в кадре данных.Один столбец называется «Время» и содержит данные в следующем формате «2018/10/13 14:29:00».В моем скрипте Python мне нужно преобразовать этот столбец из типа объекта (это тип, который я вижу при запросе Python) в datetime и сохранить этот новый формат в новом столбце под названием «date_time_fmt».
Это буквальномой сценарий, где я попробовал все возможные решения, которые я нашел в stackoverflow:
try:
df_accounts_followed['date_time_fmt'] = df_accounts_followed['time'].astype('datetime64[ns]')
except Exception as e:
print("Error 1")
exception_short_name = type(e).__name__
print("Error Type: {}".format( exception_short_name))
print("Error description: {}".format( e))
try:
df_accounts_followed['time'] = df_accounts_followed['time'].astype('|S')
name_dtype = df_accounts_followed['time'].dtype.name
print("df_accounts_followed['time'] is now of type: {}".format(name_dtype))
df_accounts_followed['date_time_fmt'] = df_accounts_followed['time'].astype('datetime64[s]')
except Exception as e:
try:
print("Error 2")
exception_short_name = type(e).__name__
print("Error Type: {}".format( exception_short_name))
print("Error description: {}".format( e))
df_accounts_followed['date_time_fmt'] = pd.to_datetime(df_accounts_followed['time'], format = '%Y/%m/%d %H:%M:%S')
except Exception as e:
print("Error 3")
exception_short_name = type(e).__name__
print("Error Type: {}".format( exception_short_name))
print("Error description: {}".format( e))
try:
df_accounts_followed['date_time_fmt'] = df_accounts_followed['time'].apply(lambda x: datetime.strptime(x,'%Y/%m/%d %H:%M:%S'))
except Exception as e:
print("Error 4")
print("Error line num: {}".format(sys.exc_info()[-1].tb_lineno))
exception_short_name = type(e).__name__
print("Error Type: {}".format( exception_short_name))
print("Error description: {}".format( e))
input("Enough !")
Теперь, когда я запускаю сценарий, вот что происходит.Первая попытка выдает эту ошибку:
Error when filtering df_excel_actions_report dataframe.
Error Type: ValueError
Error description: Error parsing datetime string "2018/10/13 14:29:00" at position 4
Это ошибка, которую я получаю после второй попытки:
Error Type: ValueError
Error description: Error parsing datetime string "2018/10/13 14:29:00" at position 4
Эта ошибка появляется после третьей попытки:
Error Type: TypeError
Error description: <class 'bytes'> is not convertible to datetime
Это ошибка, которую я получаю с последней попытки:
Error Type: TypeError
Error description: strptime() argument 1 must be str, not bytes
На данный момент мой уровень отчаяния довольно высок.Я надеюсь, что кто-нибудь сможет мне помочь.Вот некоторые из страниц, которые я прочитал: time.strptime () - аргумент 0 должен быть строковым, а не байтами , Преобразование столбцов панд в DateTime II , преобразование панд в строковых столбцахна текущее время, что позволяет отсутствовать, но не недействительно .Спасибо