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

Pandas usecols参数异常:读取Excel后列名出现.1后缀求助

Excel读取后首列标题出现“.1”后缀的原因及解决办法

问题描述

使用pandas读取Excel文件时,已通过usecols='B:D'忽略第一列,但结果中首列标题出现“.1”后缀(如“PIA IM Equity.1”)。

使用的Python脚本:

import pandas as pd
import os
os.system('cls')
df = pd.read_excel('test_1\Book1.xlsx','sheet1', header=0,  skiprows=1, usecols='B:D',index_col= 0, nrows=5)
print(df)

原因分析

核心问题出在header=0与skiprows=1的参数冲突,导致pandas解析表头时触发重复列名处理:

  • skiprows=1会跳过Excel的第1行,header=0则将跳过之后的第0行(原Excel第2行)设为表头。
  • 若原Excel第1行(被跳过的行)的B列内容,与第2行(作为表头的行)的B列内容重复,pandas会自动为重复列名添加“.1”后缀以区分,哪怕已经用usecols指定了列范围。
  • 同时index_col=0将读取的首列设为索引,也可能因内部列名检测逻辑,加重重复列名的判定。

解决办法

调整参数组合

如果Excel的第1行是真实表头,第2行开始是数据,直接移除skiprows=1即可:

import pandas as pd
import os
os.system('cls')
df = pd.read_excel('test_1\Book1.xlsx', 'sheet1', header=0, usecols='B:D', index_col=0, nrows=5)
print(df)

手动指定列名

如果确实需要跳过第1行,且第2行作为表头仍出现重复问题,可手动指定列名强制覆盖:

import pandas as pd
import os
os.system('cls')
# 将names参数里的内容替换为你实际需要的列名
df = pd.read_excel('test_1\Book1.xlsx', 'sheet1', header=0, skiprows=1, usecols='B:D', index_col=0, nrows=5, names=['索引列名', '列名2', '列名3'])
print(df)

检查Excel文件

确认被跳过的行与表头行是否存在内容重复,修改重复内容也可避免自动添加后缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:55:18