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

Loi*_*ros 2 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)
Run Code Online (Sandbox Code Playgroud)

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

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

感谢您的帮助,

Sto*_*ica 5

AFAIK 你不能这样做.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))
Run Code Online (Sandbox Code Playgroud)