如何使用pandas读取xlsx文档中指定行列范围的目标数据
读取指定Excel区域的实现代码
针对你需要读取Scoring表76-102行、A-G列的需求,提供两种可直接落地的方案,可根据场景选择:
方案1:直接限定读取范围(推荐,适合大文件/复杂结构Excel)
无需加载全表冗余数据,读取性能更高,避免无关内容干扰处理:
import pandas as pd def print_hi(): # 场景A:76-102行全为纯数据,无表头 df = pd.read_excel( 'test.xlsx', sheet_name='Scoring', usecols='A:G', # 直接匹配Excel列范围A到G skiprows=range(75), # 跳过Excel物理行1-75 nrows=27, # 76到102共27行物理行 header=None # 无表头,用数字作为默认列名 ) # 场景B:76行为表头,77-102行为数据(注释掉上面的代码,启用下面的逻辑) # df = pd.read_excel( # 'test.xlsx', # sheet_name='Scoring', # usecols='A:G', # skiprows=range(75), # nrows=27, # 包含76行表头,共读27物理行 # header=0 # 把读入的第一行(原Excel76行)设为列名 # ) # 后续数据处理逻辑...
参数说明:
usecols直接支持Excel列标写法,不需要手动换算列索引- 读取的总行数直接按物理行总数计算(102-76+1=27),
header参数仅决定哪行作为列名,不影响实际读取的物理行范围
方案2:读取全表后按位置切片(适合需使用同表其他区域数据的场景)
如果后续需要关联处理Scoring表的其他区域数据,读入时先关闭自动表头识别,保证行索引和Excel物理行严格对应,再用iloc切片:
import pandas as pd def print_hi(): # 关闭自动表头识别,所有行按物理顺序存储,此时df.iloc[k]对应Excel物理行k+1 df = pd.read_excel('test.xlsx', sheet_name='Scoring', header=None) # Excel76行对应索引75,102行对应索引101;iloc切片左闭右开,行范围写75:102 # 列A对应索引0,G对应索引6,列范围写0:7 target_df = df.iloc[75:102, 0:7] # 若需要将76行设为目标区域的表头,可后续手动处理: # target_df.columns = target_df.iloc[0] # target_df = target_df[1:]
避坑提示:
- 不要直接用默认
header=0的读入结果做行切片,否则会因为自动把Excel第一行当表头,导致行号整体偏移1位- 若目标区域内存在空行、合并单元格错位,可先打印提取的
target_df前几行和原始Excel核对,确认行号匹配后再做后续处理
内容的提问来源于stack exchange,提问作者edche
相关产品推荐
相关产品推荐

