如何在列名未知的情况下删除pandas DataFrame的第一列
pandas删除第一列(列名未知场景)的实现方法
你使用的
df1 = df1.iloc[:, 1:]本身逻辑是正确的,未生效通常是两个常见原因:
- 你误将pandas自动生成的行索引当成了数据第一列,iloc切片不会操作行索引,所以看起来没有生效
- 操作后你后续调用的还是未修改的旧DataFrame对象,或者生成的是视图而非独立副本导致修改未落地
方法1:iloc切片法(原有写法的优化版)
担心视图副本问题可以加copy()保证生成独立对象:
df1 = df1.iloc[:, 1:].copy()
适用场景:需要快速切片,且不需要保留被删除列的内容
方法2:drop方法(可读性更高)
直接取第一列的列名传给drop方法,支持inplace直接修改原对象或者赋值生成新对象:
# 方式A:生成新对象,不修改原df df1 = df1.drop(df1.columns[0], axis=1) # 方式B:直接修改原df,不需要额外赋值 df1.drop(df1.columns[0], axis=1, inplace=True)
适用场景:代码可读性要求高,需要明确体现删除列的操作逻辑
方法3:pop方法(需保留被删除列时使用)
如果需要把删掉的第一列单独保存使用,可以用pop方法,会直接修改原DataFrame同时返回被删除的列:
deleted_col = df1.pop(df1.columns[0])
适用场景:需要复用被删除的第一列数据
注意事项
- 如果你要删除的是无列名的行索引,只需要在输出/导出数据时添加
index=False参数即可,不需要额外删除操作 - 所有操作执行后可以用
print(df1.head())打印前5行验证修改结果
内容的提问来源于stack exchange,提问作者Casey Niblett
相关产品推荐
相关产品推荐

