非标准Excel转pandas DataFrame时如何选取指定行列范围数据
Excel指定行列区域数据提取方案
下面分两种场景给出可直接运行的实现代码:
场景1:直接通过openpyxl提取(适合未转DataFrame、需读取原始单元格值的情况)
openpyxl的行、列计数默认从1开始,J列对应列号10,X列对应列号24,直接按范围读取即可:
from openpyxl import load_workbook import pandas as pd # 替换为你的文件路径、工作表名 wb = load_workbook("示例文件.xlsx", data_only=True) ws = wb["Sheet1"] # 读取指定范围的单元格值 target_data = ws.iter_rows( min_row=4, max_row=12, min_col=10, max_col=24, values_only=True ) # 转成DataFrame格式 df_target = pd.DataFrame(target_data)
场景2:已将全表转为pandas DataFrame后提取(适配你当前的进度)
需要根据你转DataFrame时的参数调整索引,以下是两种常见情况的实现:
- 情况A:转DataFrame时设置了
header=0,将Excel第1行作为表头
此时Excel第4行对应DataFrame的索引为2,第12行对应索引为10;如果列名保留了Excel的A/X字母标识,可直接按列名切片:df_target = df.loc[2:10, "J":"X"] - 情况B:转DataFrame时未设置表头,列使用默认的0/1/2整数索引
此时J列对应索引9,X列对应索引23,用iloc切片(注意iloc为左闭右开规则):# 行范围3:11对应Excel第4行到第12行,列范围9:24对应J到X列 df_target = df.iloc[3:11, 9:24]
注意:如果转DataFrame时跳过了前N行空行,需要对应调整行索引的偏移量。
内容的提问来源于stack exchange,提问作者alex smolyakov
相关产品推荐
相关产品推荐

