将Excel中B29起的数据导出至新表/CSV时遇KeyError问题求助
问题分析与修复
错误原因
- 函数名拼写错误:pandas读取Excel的方法是
pd.read_excel(全小写),你写成了pd.read_Excel,这会导致方法调用异常,不过你的报错是列找不到,大概率是输入时的笔误,但必须修正。 - header参数设置错误:你要从B29开始提取数据,截图里B29是表头行(对应"Time"和"A1"),pandas的
header参数从0开始计数,所以B29对应的行索引是28,不是30。设置成30会把Excel第31行当作表头,自然找不到你要的列名。 - 列名匹配失效:header参数错误会导致读取后的DataFrame列名和预期不符,直接用
['Time', 'A1']筛选就触发了KeyError。
修复后的代码
情况1:提取B29开始的所有数据(包含所有列)
import pandas as pd # 读取Excel文件 spreadsheet_file = pd.ExcelFile('PlateReader1.xlsx') # 获取唯一工作表名(因为你只有一个工作表) sheet_name = spreadsheet_file.sheet_names[0] # 读取B29及以后的数据:header=28对应Excel第29行作为表头,usecols指定从B列开始读取所有列 df = pd.read_excel(spreadsheet_file, sheet_name=sheet_name, header=28, usecols='B:ZZ') # 保存为CSV文件 df.to_csv('extracted_data.csv', index=False) # 或者保存为新Excel文件 df.to_excel('new_sheet.xlsx', index=False, sheet_name='Extracted')
情况2:仅提取'Time'和'A1'两列(对应截图里的B、C列)
import pandas as pd spreadsheet_file = pd.ExcelFile('PlateReader1.xlsx') sheet_name = spreadsheet_file.sheet_names[0] # 指定读取B、C列,表头用Excel第29行(对应pandas索引28) df = pd.read_excel(spreadsheet_file, sheet_name=sheet_name, header=28, usecols=['B', 'C']) # 可选:验证列名是否正确 print(df.columns) # 保存数据 df.to_csv('time_a1_data.csv', index=False)
额外提示
如果B29下方存在全空行,可添加df = df.dropna(how='all')去掉这些无效行;同时要确保脚本和Excel文件在同一目录,或者使用文件绝对路径。
内容的提问来源于stack exchange,提问作者Nikki N.
相关产品推荐
相关产品推荐

