У меня есть фрейм данных, отображающий item_number, amount_picked и date_expected, и я хотел бы добавить новый столбец и заполнить его автоматически днем недели, соответствующим дате (большой набор данных, не может помечать отдельно).
Я пытался убедиться, что запрашиваемые данные представлены в формате даты, но я не уверен, что это происходит успешно.Это не обеспечивает ошибок, но все еще перечисляет столбец как «объект».Я также попытался использовать dataframe.dt.datetime и dataframe.dt.day_name, чтобы сделать это безрезультатно.
Я попытался выполнить это, запустив запрос обоими способами, показанными ниже:
SQL = ('SELECT item_number AS UPC, quantity_picked, date_expec AS date_expected FROM [Data] ORDER BY [date_expected] ASC')
SQL = ('SELECT item_number AS UPC, quantity_picked, CAST(date_expec AS date) AS date_expected FROM [Data] ORDER BY [date_expected] ASC')
Я попробовал каждую комбинациюдва выше и два ниже пытаются добавить новый столбец с днями недели к фрейму данных:
practice_df = pd.read_sql_query(SQL, con=sql_conn, parse_dates={'date_expected':'%Y%m%d'})
practice_df['day_of_week'] = practice_df['date_expected'].dt.day_name()
print(practice_df)
practice_df = pd.read_sql_query(SQL, con=sql_conn, parse_dates={'date_expected':'%Y%m%d'})
practice_df['date_num'] = practice_df.append(pd.to_datetime(practice_df['date_expected']))
practice_df['day_of_week'] = practice_df['date_expected'].dt.day_name()
print(practice_df)
В качестве еще одной попытки я сократил второй фрагмент кода на одну строку ввремя обнаружил удаление части parse_dates из строки, превращающей результаты запроса в кадр данных, а все остальные строки позволяли коду выполняться без ошибок.Затем я попробовал следующее ...
practice_df = pd.read_sql_query(SQL, con=sql_conn)
practice_df['date_num'] = practice_df.append(pd.to_datetime(practice_df['date_expected']))
practice_df['day_of_week'] = practice_df.append(practice_df['date_num'].dt.day_name())
print(practice_df)
Я попытался найти решение самостоятельно после исследования документации pd.read_sql_query и series.dt.datetime, а также поиска следующих опубликованных и отвеченных вопросов.для руководства:
Как parse_dates работает с pd.read_sql_query
Создание столбца дня недели в кадре данных Pandas с использованием Python
Когда при любом запросе параметров и втором параметре фрейма данных я получаю сообщение об ошибке
File "...anaconda3\lib\site-packages\numpy\core\shape_base.py", line 283, in vstack
return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)
MemoryError
При использовании первого параметра при создании фрейма данных и добавлении нового столбца данные распечатываются как:
UPC quantity_picked date_expected day_of_week
0 0001111085148 1.0 NaT NaN
1 0001111086984 1.0 NaT NaN
2 0001111088636 1.0 NaT NaN
3 0001111097045 1.0 NaT NaN
4 0001450002690 1.0 NaT NaN
5 0001600012479 1.0 NaT NaN
6 0003800019891 1.0 NaT NaN
7 0004450034115 1.0 NaT NaN
8 0005100021165 1.0 NaT NaN
Когда я пытался выполнить последний запрос к фрагменту данных, указанному как попытка выше, я получил следующую ошибку:
File
"...lib\site-packages\pandas\core\internals\managers.py", line 1325, in _make_na_block
block_values = np.empty(block_shape, dtype=dtype)
MemoryError
Есть ли более простой способ, которым я должен идти об этом или что-то, что яотсутствует?Любое руководство с благодарностью.