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

pandas如何合并DataFrame中被拆分的特定行数据

pandas读取Excel后多行拆分内容合并方案

问题场景

使用pandas的read_excel方法读取Excel文件生成DataFrame时,会出现字符串列的部分内容被拆分到后续多行的情况,调整导入参数无法修复,需要对拆分内容做合并还原。
示例原始DataFrame结构:

{
    'CODE': ['A', None, 'B', None, None, 'C'],
    'TEXT': ['A', 'a', 'B', 'b', 'b', 'C'],
    'NUMBER': ['1', None, '2', None, None,'3']
}

目标合并后结构:

{
    'CODE': ['A','B','C'],
    'TEXT': ['Aa','Bbb','C'],
    'NUMBER': ['1','2','3']
}

实现代码

核心逻辑是通过向前填充主键列生成分组键,按组拼接拆分的字符串、提取对应非空属性值:

import pandas as pd

# 此处替换为你实际读取Excel的代码
# df = pd.read_excel("你的文件路径.xlsx")

# 测试用原始数据
df = pd.DataFrame({
    'CODE': ['A', None, 'B', None, None, 'C'],
    'TEXT': ['A', 'a', 'B', 'b', 'b', 'C'],
    'NUMBER': ['1', None, '2', None, None,'3']
})

# 若数据中空值为空字符串而非NaN,先执行替换:df = df.replace("", pd.NA)

# 向前填充CODE列,为拆分的多行绑定所属主键
df["group_key"] = df["CODE"].ffill()

# 分组聚合完成合并
result = df.groupby("group_key", as_index=False).agg(
    # 拼接同组下所有TEXT内容,不需要分隔符就用空字符串,需要换行/逗号就替换为'\n'/','
    TEXT=("TEXT", lambda col: "".join(col.astype(str))),
    # 取同组下第一个非空的NUMBER值
    NUMBER=("NUMBER", lambda col: col.dropna().iloc[0])
).rename(columns={"group_key": "CODE"})

执行后result的输出和预期结构完全一致。

适配调整说明

  • 如果拆分的标识列不是CODE,把代码里的CODE替换为你实际的主键列名即可
  • 如果TEXT拼接需要特定分隔符,修改join方法的入参即可,比如逗号分隔就写",".join(col.astype(str))
  • 如果存在多列需要拼接的字符串字段,在agg方法里按TEXT的写法新增对应聚合规则即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 21:57:22