Python中遍历pd.ExcelFile工作表仅读取最后一个表的问题排查
问题原因与解决方法
原因分析
你的代码存在两个关键问题:
- 循环结束后,变量
i会保留最后一次遍历到的工作表名,而你只在循环外执行了一次pd.read_excel,所以只会读取这最后一个符合条件的工作表。 - 你虽然筛选出了符合条件的工作表名并存入
sheet_names_needed列表,但后续代码完全没有使用这个列表,等于白做了筛选步骤。
修正代码
如果你需要对每个符合条件的工作表都执行读取和绘图操作,应该遍历筛选后的工作表名,逐个处理:
方法一:先筛选再遍历
xls = pd.ExcelFile(file_path) sheet_names_needed = [] for i in xls.sheet_names: if len(i) < 4: sheet_names_needed.append(i) # 遍历筛选后的工作表,逐个读取并处理 for sheet_name in sheet_names_needed: df = pd.read_excel(file_path, sheet_name=sheet_name, skiprows=6, usecols=range(0,3)) print(f"工作表【{sheet_name}】的数据:") print(df) # 在这里添加绘制图表的代码,比如折线图: # df.plot(kind='line', x=df.columns[0], y=df.columns[1]) # plt.show()
方法二:直接遍历处理(更简洁)
可以省去单独的筛选列表,直接在遍历工作表名时判断并处理:
xls = pd.ExcelFile(file_path) for sheet_name in xls.sheet_names: if len(sheet_name) < 4: df = pd.read_excel(file_path, sheet_name=sheet_name, skiprows=6, usecols=range(0,3)) print(f"工作表【{sheet_name}】的数据:") print(df) # 执行绘制图表的操作
内容的提问来源于stack exchange,提问作者XN L
相关产品推荐
相关产品推荐

