我有以下DataFrame,其中第0列是ID,第1列是Name,第2列是Total。第2列是新生成的。
0 1 2
0 1 Name1 1
1 2 Name2 8
2 3 Name3 6
3 4 Name4 5
依旧......
ID是我数据库中现有表的主键。我在我的表中创建了一个新列(最初有两列ID和Name),标记为“Total”,我想为每个相应的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'
答案 0 :(得分:1)
正确的方法:
import sqlite3
import pandas as pd
#access the database created
db = sqlite3.connect('database')
df = pd.read_sql("select ID, Name, count(*) from table1 as t1 join table2 as t2 on t1.ID=t2.ID group by ID", db)
df.to_sql('table1', db, if_exists='replace', index=False)