You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python(pandas)删除Excel首行首列失效及报错问题咨询

问题根因

两个问题本质是对pandas的基础规则不熟悉,没有什么玄学:

  • drop方法默认匹配的是行/列的标签值,不是从上到下/从左到右的位置序号,你传的0是要找的标签,不是“第一个”的意思。
    读Excel时pandas默认把第一行当作列名,自动生成0开始的整数作为行索引;转置之后,原来的列名会变成新表的行索引,原来的行索引会变成新表的列名。这时候新表的行索引里根本没有0这个值——第一行的标签是pandas给空单元格自动补的Unnamed: 0,所以执行行删除的时候直接报找不到0的错。
    第一条删列的语句不报错,是因为列标签里确实有0这个值,但这列根本不是你要删的第一列,属于删错了对象,当然看不到效果。
  • 导出Excel的时候没加index=False,pandas默认会把行索引单独作为第一列写到文件里,就算你删对了列,导出后也会多出来一列索引,看起来就像首列没删干净。
修正方案

别跟标签较劲,直接按位置切片最省事,不管索引列名叫什么,直接跳过第一行第一列就行:

import pandas as pd

file_name = 'ex1.xlsx'
sheets = pd.read_excel(file_name, sheet_name=None)
sheet_name, df = next(iter(sheets.items()))
df = df.T
# 行、列都从位置1开始取,直接跳过第一行第一列
df = df.iloc[1:, 1:]
# 导出时关掉索引和表头写入,避免生成多余的行列
df.to_excel(file_name, sheet_name, index=False, header=False)

如果后续非要用drop按标签删,先跑print(df.index)和print(df.columns)把当前的行、列标签打印出来看清楚,不要想当然认为第一行第一列的标签就是0。

内容的提问来源于stack exchange,提问作者Oreboku42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:48:30