gpt4 book ai didi

python - 将 Pandas 数据框保存到具有不同列名的 sqlite 中?

转载 作者:行者123 更新时间:2023-12-03 18:10:50 25 4
gpt4 key购买 nike

我有一个 sqlite 数据库和具有不同列名的数据框,但它们指的是同一个东西。例如。

  • 我的数据库 Cars 有汽车 ID、名称和价格。
  • 我的数据框 df 具有汽车身份、值和名称。

  • 附加:我还想在 df 中不存在的数据库中添加一个附加的“日期”列,并根据当前日期插入它。

    我想将 df 保存在数据库中,以便 Id = Identity , Price = Value , Name = Namedate = something specified by the user or current
    所以我不能像往常一样 df.to_sql (除非我重命名列名,但我想知道是否有更好的方法来做到这一点)

    我首先尝试在没有日期列的情况下同步名称 cur.execute("INSERT INTO Cars VALUES(?,?,?)",df.to_records(index=False))
    但是,上述方法不起作用,并给我一个错误,即绑定(bind)不正确。另外,DB和DF中的列顺序不同

    我什至不确定如何处理我有额外日期列的部分,所以任何帮助都会很棒。下面是生成所有值的示例代码。
    import sqlite3 as lite

    con = lite.connect('test.db')

    with con:

    cur = con.cursor()
    cur.execute("CREATE TABLE Cars(Id INT, Name TEXT, Price INT, date TEXT)")
    df = pd.DataFrame({'Identity': range(5), 'Value': range(5,10), 'Name': range(10,15)})

    最佳答案

    你可以做:
    cur.executemany("INSERT INTO Cars (Id, Name, Price) VALUES(?,?,?)", list(df.to_records(index=False)))
    此外,您应该指定 dtype数据框的属性为 numpy.int32满足表'Cars'的约束

    con = sqlite3.connect('test.db')
    cur = con.cursor()

    cur.execute("CREATE TABLE Cars(Id INT, Name TEXT, Price INT, date TEXT)")
    df = pandas.DataFrame({'Identity': range(5), 'Value': range(5,10), 'Name': range(10,15)}, dtype=numpy.int32)

    cur.executemany("INSERT INTO Cars (Id, Price, Name) VALUES(?,?,?)", list(df[['Identity', 'Value', 'Name']].to_records(index=False)))

    query ="SELECT * from Cars"
    cur.execute(query)
    rows= cur.fetchall()
    for row in rows:
    print (row)

    关于python - 将 Pandas 数据框保存到具有不同列名的 sqlite 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36593552/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com