Я пытаюсь изменить таблицу в своей базе данных. Однако мне трудно использовать метод to_sql, предоставленный Pandas. Мой price_data
Dataframe выглядит примерно так:
Исходный кадр данных (как строки в базе данных):
Код, используемый для изменения данных:
with con:
price_data.to_sql(con=con, name='clean_prices2', if_exists='append', index=False, flavor='mysql')
Конечной целью здесь является изменение исходного фрейма данных (преобразование нулевых значений в значения Нана, а затем их интерполяция) и сохранение его обратно в базу данных. Результаты должны выглядеть так (кроме того же id
):
Желаемый результат:
Если вы посмотрите конкретно на столбец close_price
, вы увидите, что значение 0 было присвоено 90,7350.
Мое текущее решение заключается в добавлении строк данных, что приводит к дублированию таких записей:
Фактический результат:
Наконец, мне пришлось бы выполнить еще один запрос, чтобы удалить повторяющиеся строки (на основе price_date).
Я знаю, что могу изменить параметр if_exists
на replace, но это удалит остальную часть моей таблицы базы данных. В основном я хочу выполнить этот запрос несколько раз на разных symbol_id
Можно ли как-то изменить подмножество (в данном случае только 3 строки) без удаления остальных данных в моей таблице? Решение может либо изменить существующие строки (сохраняя тот же id
), либо удалить старые строки и создать новые без нулей. Я просто пытаюсь выполнить это без дополнительного запроса на удаление дубликатов.
symbol_id
иprice_date
для сопоставления временной таблицы с итоговой? И, наконец, вы всегда будете только обновлять или вставлять новые строки? Обратите внимание: MySQL имеет свои уникальные команды:UPSERT
иINSERT REPLACE
. - person Parfait   schedule 17.09.2016