如何用Pandas/Python遍历多表Excel文件并统计非表头行数?
解决方法
这事儿很简单,我给你一步步写清楚:
你已经用pd.ExcelFile读取了Excel文件,接下来只需要遍历每个工作表,读取数据后统计行数,最后拼接成你要的格式就行。
完整代码示例
import pandas as pd # 你已经完成的读取文件步骤 excel_file = pd.ExcelFile('./data.xlsx') # 用来存储每个工作表的结果片段 result_items = [] # 遍历所有工作表名称 for sheet_name in excel_file.sheet_names: # 读取当前工作表,默认第一行为表头(符合你的需求) sheet_data = excel_file.parse(sheet_name) # 统计除表头外的行数:parse返回的DataFrame里的行都是数据行,直接取长度即可 row_count = len(sheet_data) # 把当前工作表的结果加入列表 result_items.append(f"{sheet_name}有{row_count}行") # 用“、”连接所有结果片段,得到最终格式的字符串 final_output = "、".join(result_items) print(final_output)
关键细节说明
excel_file.parse(sheet_name):这个方法会自动把工作表的第一行识别为表头(列名),返回的DataFrame里只包含数据行,所以直接用len(sheet_data)就能得到你要的“除表头外的条目数量”,不用额外减1。- 如果遇到某个工作表只有表头没有数据行,
len(sheet_data)会返回0,最终会显示类似x有0行,这也是符合逻辑的。 - 要是你的Excel里存在没有表头的工作表(但你还是想把第一行当作表头排除),可以在
parse时指定header=0(其实这是默认值),确保第一行被当作表头处理。
这样运行代码后,就能得到你想要的类似a有10行、b有12行、c有5行的输出啦。
内容的提问来源于stack exchange,提问作者ah bon




