在pandas.to_sql中的索引,数值错误:索引/列中存在重复名称,无法插入id,因为已经存在。

4

我正在使用pandas读写MySQL表格,我相信我在写入时尝试设置为索引的值是唯一的。我在没有索引的情况下检查了表格,并且count(distinct(id))count(id)给出了相同的行数。然而,我仍然遇到了错误。

'ValueError: duplicate name in index/columns: cannot insert product_id, already exists'

如果我设置index=True, index_label="id"

我已经尝试了reset_index,但它没有帮助。

df.to_sql(name=config.DB_TABLE, con=connection, schema=config.DB_SCHEMA, if_exists='fail', index=True, index_label="id")

我做错了什么?


你是如何编写表格的,是使用“replace”还是“append”?如果使用“append”,那么它可能会与该列中现有的值重复。你能展示一下数据库表结构和to_sql函数的代码吗? - TYZ
2
@YilunZhang 我在写入数据之前删除了表格,因此在 to_sql 执行之前它甚至不存在。 - mboronin
2个回答

2

我曾经遇到过同样的问题。在调用to_sql()方法之前,我通过设置DataFrame的索引来解决了这个问题:

df = df.set_index('your_index')

我相信该方法不会接受我指定的索引,因为它已经尝试使用默认的pandas索引(即0, 1, 2...)。将DataFrame的索引设置为您在数据库中想要的索引将避免此冲突。


0
我曾经遇到过同样的问题并且感到困惑。问题出在我在编程期间向我的数据框中添加了一列。因此,这些列与 SQL 数据库中的列不再匹配。你应该检查你的列是否匹配。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接