如何将DataFrame中的特定列插入数据库表的新列?

时间:2015-04-17 14:20:16

标签: python-2.7 pandas sqlite dataframe

我有以下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'

1 个答案:

答案 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)