Python - проблема при чтении столбца панд и преобразовании его в datetime - PullRequest
0 голосов
/ 14 октября 2018

У меня есть проблема, которая по-разному обсуждалась на других страницах 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 , преобразование панд в строковых столбцахна текущее время, что позволяет отсутствовать, но не недействительно .Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...