You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:55:03