Python操作Excel:写入出现序列表头/数据无法写入首行问题咨询
问题解答
1. 为什么写入Excel时会出现类似[0,1,2,...]的行作为表头?
其实原因很简单:你读取文件时用了header=None,这会让Pandas不给DataFrame设置自定义列名,而是自动分配默认的整数索引(0、1、2...)。而默认情况下,df.to_excel()会把DataFrame的列名当成表头写入Excel——这些整数索引就被输出成了那行[0,1,2,...]的表头。
2. 如何让DataFrame第一行直接写入Excel第1行,不生成表头?
只需要在to_excel()里加个header=False参数就行!这个参数会告诉Pandas不要把列名(那些默认的整数索引)写入表头行。修改后的完整代码如下:
# 读取文件,header=None表示不将原Excel第一行识别为表头 df = pd.read_excel("DataName.xlsx", sheet_name=0, header=None) # 修改B1单元格(对应DataFrame的第0行第1列) df.iloc[0,1] = "my text" # 初始化Excel写入器 writer = pd.ExcelWriter(mypath, engine='xlsxwriter') # 导出时关闭行索引和表头 df.to_excel(writer, sheet_name=new_sheet, index=False, header=False) # 务必保存并关闭写入器,否则文件可能无法正常生成 writer.close()
这里再补充两个关键参数的作用:
index=False:防止把DataFrame的行索引(0、1、2...)写入Excel的第一列header=False:防止把DataFrame的列名(0、1、2...)写入Excel的第一行
这样调整后,你的DataFrame第一行就会直接对应Excel的第1行,完全满足你的需求~
内容的提问来源于stack exchange,提问作者Mohsen




