mysql - 使用 to_sql 时如何防止使用第一行 Pandas DataFrame 作为列名

标签 mysql csv pandas

我有一个从 CSV 文件加载的数据框,其中包含标题行。分配从 read_csv 返回的数据帧后,我尝试使用 SQLAlchemy 引擎将行添加到 MySQL 数据库表中,我的方法调用如下所示:

my_dataframe.to_sql(name="my_table",
                    con=alch_engine,
                    if_exists="append",
                    chunksize=50,
                    index=False,
                    index_label=None)

但是,该表已经存在,并且数据帧标题的值与列名称不匹配,因此我收到 MySQL 错误(1054,“'field_list' 中的未知列 'Col1'”)

我不想使用第一行并在不指定列名的情况下运行插入查询。我还没有从 Pandas 手册中找到解决方案。

感谢您的帮助,

最佳答案

据我所知,您不能使用 .to_sql() 来做到这一点。但是您可以修改数据框以匹配表中的列名称。假设 db_cols 是一个包含名称的列表/数组/系列/可迭代对象,则应该这样做:

(my_dataframe
 .rename(columns=dict(zip(df.columns, db_cols)))
 .to_sql(name="my_table",
         con=alch_engine,
         if_exists="append",
         chunksize=50,
         index=False,
         index_label=None))

关于mysql - 使用 to_sql 时如何防止使用第一行 Pandas DataFrame 作为列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35486721/

相关文章:

php - 如何从 Ionic 移动应用程序连接到 mysql?

java - 使用 JAVA 将希伯来语写入 mySql

php - 为什么在 Laravel 的 Controller 中没有正确重定向 if else?

php - 我想通过托管在远程服务器上的 php 脚本访问本地 mysql 数据库

Python - 无法解析utf8 csv

python - Pandas/Matplotlib 日期刻度线在子图中消失

python - 将 x 个值写入 txt 文件中的每一行

javascript - 如何将新日期列填充到现有 CSV 文件

python - 将数据框中的列转换为数值列表列表

python - 如何处理 pandas 中互补的重复数据?