Python读取Excel透视表分组行下子项数据的问题咨询
读取Excel透视表分组子项数据的解决方案
Excel透视表的分组子项默认处于折叠隐藏状态,普通读取工具只会加载可见行,因此要获取分组下的子项数据,必须读取所有行(包括隐藏行)。以下是两种可行的Python实现方法:
方法一:用openpyxl直接遍历所有行
openpyxl可识别行的隐藏属性,直接遍历工作表所有行就能获取分组子项数据:
from openpyxl import load_workbook # 加载工作簿,data_only=True读取单元格实际值而非公式 wb = load_workbook("你的透视表文件.xlsx", data_only=True) ws = wb.active # 收集所有非空行数据 all_data = [] for row in ws.iter_rows(values_only=True): # 过滤完全空的行 if any(cell is not None for cell in row): all_data.append(row) # 转换为目标字典结构(示例:以第一列内容为键,其余列为值) result_dict = {} # 假设第一行是表头,从第二行开始处理 for row in all_data[1:]: group_or_item_name = row[0] result_dict[group_or_item_name] = row[1:]
方法二:结合openpyxl与pandas转换
如果习惯用pandas处理数据,可先通过openpyxl获取所有行数据,再转为DataFrame后生成字典:
import pandas as pd from openpyxl import load_workbook wb = load_workbook("你的透视表文件.xlsx", data_only=True) ws = wb.active # 提取所有非空行的单元格值 raw_data = [row for row in ws.iter_rows(values_only=True) if any(cell is not None for cell in row)] # 转为DataFrame df = pd.DataFrame(raw_data[1:], columns=raw_data[0]) # 转换为字典(可选两种格式) # 格式1:按行生成字典列表 row_dict_list = df.to_dict('records') # 格式2:以指定列为键 col_key_dict = df.set_index(df.columns[0]).to_dict('index')
关键说明
透视表的分组折叠本质是将子项行设置为隐藏状态,只要读取时不限制仅加载可见行,就能获取到所有分组及子项数据。
内容的提问来源于stack exchange,提问作者KeetsScrimalittle
相关产品推荐
相关产品推荐

