如何去除pandas read_sql读取MySQL返回结果的默认行号列

这列行号不是MySQL查询返回的表字段,是pandas DataFrame自带的默认行索引,不属于查询结果本身的内容,完全可以根据使用场景去除,对应处理方法如下:
不同场景的去除方案
- 仅预览/打印/导出时不想显示行号
不需要修改DataFrame本身结构,只要在输出、导出方法中传入index=False参数即可:
如果是在Jupyter类环境中直接预览DataFrame,想全局默认隐藏索引,可以提前配置pandas参数:import pandas as pd from sqlalchemy import create_engine # 连接数据库读取数据 engine = create_engine("mysql+pymysql://账号:密码@数据库地址/库名") df = pd.read_sql("SELECT * FROM 目标表名", con=engine) # 控制台打印时不显示行号 print(df.to_string(index=False)) # 导出为CSV/Excel文件时不写入行号 df.to_csv("结果.csv", index=False) df.to_excel("结果.xlsx", index=False)# 全局关闭DataFrame预览时的索引显示 pd.set_option("display.show_index", False) - 需要彻底移除DataFrame的默认数字索引
可以直接重置索引并丢弃原索引列,或者用表中自带的业务主键替换默认索引:# 方式1:丢弃默认生成的数字索引 df = df.reset_index(drop=True) # 方式2:用表内自带的唯一字段(比如主键id)作为索引,替换默认数字行号 df = df.set_index("表内主键字段名")
补充说明:
pd.read_sql方法本身没有提供读取时跳过索引的参数,因为这列索引是pandas自动为DataFrame生成的结构,和数据库查询逻辑无关,不需要修改SQL语句做特殊处理。
内容的提问来源于stack exchange,提问作者suj
相关产品推荐
相关产品推荐

