Python中更优的Excel列转变量方法及自动获取列行数方案
Excel列转Python变量的优化方案
方案一:改进xlrd写法(兼容现有依赖)
你的现有代码需要手动指定循环行数,且重复编写append操作,我们可以利用xlrd的nrows属性自动获取总行数,再用列表推导式简化代码:
import xlrd workbook = xlrd.open_workbook(r"C:\Desktop\SawToothCalib\TestData.xlsx") worksheet = workbook.sheet_by_index(0) # 自动获取工作表总行数,从第2行(索引1)开始读取数据 total_rows = worksheet.nrows # 用列表推导式直接生成各列数据,替代循环+append X_Test = [worksheet.cell_value(i, 0) for i in range(1, total_rows)] Y_Test = [worksheet.cell_value(i, 2) for i in range(1, total_rows)] Row_Test = [worksheet.cell_value(i, 3) for i in range(1, total_rows)] Col_Test = [worksheet.cell_value(i, 4) for i in range(1, total_rows)]
方案二:使用pandas简化实现(推荐)
xlrd对新版.xlsx文件的支持有限(xlrd 2.0+仅支持.xls),而pandas处理Excel数据更高效通用,无需手动循环,直接通过列名提取数据:
import pandas as pd # 读取Excel第一个工作表,自动识别表头 df = pd.read_excel(r"C:\Desktop\SawToothCalib\TestData.xlsx") # 提取对应列转为列表(如需保留pandas Series格式,可去掉.tolist()) X_Test = df['X'].tolist() Y_Test = df['Y'].tolist() Row_Test = df['Row_Cog'].tolist() Col_Test = df['Col_Cog'].tolist()
这个方案的优势:
- 自动跳过表头行,无需手动指定起始索引
- 直接用列名提取数据,不用关心列的位置顺序
- 支持
.xls和.xlsx格式,兼容性更强
内容的提问来源于stack exchange,提问作者Kavya Kommuri
相关产品推荐
相关产品推荐

