Я запрашиваю некоторые данные из SQL Server в Python, используя pyodbc, и сохраняю результаты в фрейме данных pandas. Один из полученных столбцов должен быть типом данных date, но он переходит как объект. Я пытаюсь выяснить, как я могу работать с датами в этом столбце.
Мне удалось преобразовать все столбцы в строковые и чистые данные, я смог успешно преобразовать количество_популярных в число с плавающей запятой, но не смог успешно преобразовать столбец date_expected в datetime64 (как это предлагалось на других сайтах в сети) до ИЛИ после преобразования этого в строку.
Получена ошибка:
NameError: name 'datetime64' is not defined
Я также попытался просто преобразовать результаты, используя pd.to_datetime (), и я получаю ошибку ниже:
TypeError: <class 'pyodbc.Row'> is not convertible to datetime
У меня возникли проблемы с поиском какой-либо документации о том, как указать тип данных при выполнении запросов с использованием pyodbc.
Если я пропустил что-то очевидное, извините, я новый пользователь Python.
Я не уверен, стоит ли мне беспокоиться о получении этого с правильным типом данных во время запроса, после запроса и перед очисткой, или после очистки, или если это вообще возможно. Если это невозможно, приветствуется любое руководство о том, как обращаться с датами во время анализа в python.
Вот как я перетаскиваю данные из SQL Server в Python и помещаю их в фрейм данных:
cursor = sql_conn.cursor()
SQL_query1 = cursor.execute('SELECT item_number FROM [Data].[MCF].[FULL ORDER DETAIL]')
pratice_df = pd.DataFrame()
practice_df1 = pd.DataFrame(SQL_query1, columns=['item_number']) #imports all values from query as one column
SQL_query2 = cursor.execute('SELECT quantity_picked FROM [Data].[MCF].[FULL ORDER DETAIL]')
practice_df2 = pd.DataFrame(SQL_query2, columns=['quantity_picked'])
SQL_query3 = cursor.execute('SELECT date_expec FROM [Data].[MCF].[FULL ORDER DETAIL]')
practice_df3 = pd.DataFrame(SQL_query3, columns=['date_expected'])
#combine separate dataframes into one dataframe with corresponding values
practice_df = pd.concat([practice_df1, practice_df2, practice_df3], axis=1)
Не удалось заставить pyodbc перенести данные, не поместив все 3 столбца в один столбец в кадре данных, поэтому я перенес столбцы и ввел их в отдельные кадры, а затем объединил их.
Вот как отображаются данные (после очистки):
0 0001111041660 1.0 2019-05-27
1 0001111046070 2.0 2019-05-27
Если я сейчас введу practice_df.info (), я получу:
RangeIndex: 55676 entries, 0 to 55675
Data columns (total 3 columns):
item_number 55676 non-null object
quantity_picked 55676 non-null float64
date_expected 55676 non-null object
dtypes: float64(1), object(2)
Любое руководство очень ценится. Спасибо.