У меня есть следующий DataFrame, где столбец 0 является идентификатором, столбец 1 - это имя, а столбец 2 - Total. Колонка 2 вновь создается.Как вставить один столбец в существующем DataFrame в новый столбец в таблице в существующей базе данных
0 1 2
0 1 Name1 1
1 2 Name2 8
2 3 Name3 6
3 4 Name4 5
и так далее ..
ID является первичным ключом в существующей таблице в моей базе данных. Я создал новый столбец в моей таблице (который первоначально имел два идентификатора столбца и имя), помеченный как «Всего», и я хочу вставить в него значения столбца 1 для каждого соответствующего идентификатора.
В настоящее время я обновляю существующую таблицу в DataFrame с новым столбцом Total в конце. Затем перепишите всю таблицу снова, используя df.to_sql (..., if_exists = 'replace').
Вот мой полный код для справки:
import sqlite3
from pandas import DataFrame
#access the database created
db = sqlite3.connect('database')
c = db.cursor()
c.execute("select ID, Name, count(*) from table1 as t1 join table2 as t2 on t1.ID=t2.ID group by ID")
df = DataFrame(c.fetchall())
df.to_sql('table1', db, if_exists='replace', index=False)
Я получаю следующее сообщение об ошибке:
AttributeError: 'numpy.int64' object has no attribute 'replace'
Вы в основном нужно манипулировать dataframe, чтобы получить его в форме, где вставка полных строк имеет смысл. Это может включать в себя вытеснение существующих данных из вашей базы данных, объединение этих двух фреймов данных и последующее управление до вызова 'df.to_sql (..., if_exists = replace)' или что-то в этом роде. Можете ли вы показать, что вы хотите, чтобы финальная таблица выглядела вместе с некоторыми примерами данных из существующей таблицы? –
@PaulH Я предполагаю, что могу воссоздать всю таблицу, но, похоже, это круг вокруг способа сделать это, а не просто просто вставить его. Но вы, вероятно, правы, вероятно, это будет быстрее, чем цикл и вставка строки за строкой. Я попытаюсь воссоздать таблицу, используя запрос, и заменить ее на свой DataFrame, используя df.to_sql (..., if_exists = replace) – BKS
@PaulH Я пробовал свой путь с to_sql, но он, похоже, не работает. Я получаю сообщение об ошибке. Я обновил вопрос с полным кодом. – BKS