如何使用Pandas遍历xlsx工作表并仅读取指定列数据
Pandas实现xlsx表逐行提取URN、GUID、CODE列值的方法
环境准备
- 需先安装pandas及xlsx专用读取引擎openpyxl,执行安装命令:
pip install pandas openpyxl
核心实现思路
- 读取xlsx文件时直接指定仅加载需要的3个目标列,跳过其他无关列,大幅降低内存占用
- 数据集加载完成后逐行遍历,按列名直接获取对应单元格的取值,全程不需要处理其他冗余列
可直接复用的示例代码
import pandas as pd # 替换为你本地的xlsx文件路径 file_path = "你的工作表.xlsx" # 读取文件时通过usecols参数指定仅加载3个目标列 excel_df = pd.read_excel( io=file_path, engine="openpyxl", usecols=["URN", "GUID", "CODE"] ) # 逐行遍历提取每列的取值 for row_index, row_data in excel_df.iterrows(): # 按列名直接读取当前行的三个目标值 current_urn = row_data["URN"] current_guid = row_data["GUID"] current_code = row_data["CODE"] # 后续可在此处添加自定义业务逻辑,比如数据校验、结果写入其他文件等 print(f"行号{row_index + 2}取值:URN={current_urn}, GUID={current_guid}, CODE={current_code}")
性能优化与常见问题处理
- 大表遍历提速:当工作表数据量超过10万行时,可替换遍历方法为
itertuples(),遍历效率比iterrows()高30%以上,写法如下:# 高性能遍历版本 for row_data in excel_df.itertuples(index=False): current_urn = row_data.URN current_guid = row_data.GUID current_code = row_data.CODE - 列名匹配报错处理:如果运行时提示找不到'URN'/'GUID'/'CODE'列,大概率是原始表的列名前后带了多余空格,可在读取后加一行清洗代码解决:
excel_df.columns = excel_df.columns.str.strip(),统一去掉列名前后的空白字符即可完成精准匹配。 - 避免无效内存消耗:不要先读取全表再筛选目标列,这种操作对于列数多、单文件超过100M的场景会造成不必要的内存浪费,直接在读取阶段通过
usecols指定目标列的方式,整体处理速度会提升数倍。
内容的提问来源于stack exchange,提问作者Renma
相关产品推荐
相关产品推荐

