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

如何将数据透视表父行的子行数据合并至同一行?

实现父行与子行数据合并的方案

一、Excel中的实现方法

方法1:公式组合法

  • 假设目标数据在A列,父行是粗体格式,子行为后续非粗体年份。
  • 先添加辅助列(比如B列),在B2单元格输入公式并下拉填充:
    =IF(CELL("fontbold",A2)=TRUE,A2,"")
    
    这一步会标记出所有父行内容,子行则留空。
  • 再添加目标列(比如C列),在C2单元格输入公式(注意把A$2:A$100替换成你的实际数据范围):
    =IF(CELL("fontbold",A2)=TRUE,TEXTJOIN(", ",TRUE,OFFSET(A2,1,0,COUNTA(A$2:A$100)-MATCH(A2,A$2:A$100,0),1)),"")
    
    这个公式会在父行位置自动合并后续所有子行的年份,直到下一个父行出现。
  • 最后筛选C列不为空的行,就是整理后的目标数据。

方法2:Power Query法

  • 选中数据区域,点击「数据」选项卡→「从表格/区域」,进入Power Query编辑器。
  • 添加自定义列判断每行是否为父行:
    = Table.AddColumn(源, "是否父行", each Cell.Font.Bold)
    
  • 按以下步骤操作:
    1. 使用「填充」→「向下」,将父行标签填充到下方所有子行对应的行中。
    2. 筛选出子行(「是否父行」为FALSE),按父行标签分组,合并年份列的内容。
    3. 将分组后的子行数据与父行数据合并,导出即可得到目标格式。

二、Python中的实现方法

需要依赖pandas和openpyxl库,先通过pip install pandas openpyxl安装。

步骤1:读取数据并识别父行

import pandas as pd
from openpyxl import load_workbook

# 加载你的Excel文件
wb = load_workbook("你的文件路径.xlsx")
ws = wb.active

# 提取A列数据和对应单元格的粗体标记
data_list = []
bold_flag = []
for row_num in range(2, ws.max_row + 1):
    cell_value = ws.cell(row=row_num, column=1).value
    is_bold = ws.cell(row=row_num, column=1).font.bold
    data_list.append(cell_value)
    bold_flag.append(is_bold)

# 转为DataFrame格式
df = pd.DataFrame({"内容": data_list, "是否父行": bold_flag})

步骤2:合并子行到对应父行

# 把父行标签向下填充,让每个子行都匹配到对应的父行
df["父行标签"] = df.loc[df["是否父行"], "内容"].ffill()

# 按父行标签分组,合并子行的年份内容
child_merged = df[~df["是否父行"]].groupby("父行标签")["内容"].agg(", ".join).reset_index()

# 筛选父行数据,与合并后的子行数据关联
parent_data = df[df["是否父行"]][["内容"]].rename(columns={"内容": "父行标签"})
final_result = pd.merge(parent_data, child_merged, on="父行标签", how="left")

# 重命名列并导出结果
final_result.columns = ["父行", "合并子行年份"]
final_result.to_excel("整理后数据.xlsx", index=False)

内容的提问来源于stack exchange,提问作者chickenbutt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:42:02