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

Pandas如何将transaction details列分散多行的条目合并为单行

交易明细多行合并实现方案

以下提供两种常用场景的处理方式:

Pandas代码处理(适合大批量数据)

前置逻辑

通常这类拆分数据的规律是:单条交易的唯一标识字段(如交易ID、交易日期、金额等)仅在拆分后的第一行有值,后续明细行的这些字段为空,我们可以基于这个规律做分组合并。

  • 步骤1:填充分组标识
import pandas as pd
# 向前填充空的唯一标识列,生成分组ID
df['group_id'] = df['交易ID'].ffill()
  • 步骤2:按分组合并明细内容
df_merged = df.groupby('group_id', as_index=False).agg({
    # 非明细类字段保留首个非空值
    '交易日期': 'first',
    '交易金额': 'first',
    # 明细字段拼接所有行内容,用换行符分隔,也可换成空格、分号等其他分隔符
    'transaction details': lambda x: '\n'.join(x.dropna().astype(str))
})
  • 验证效果:合并完成后执行print(df_merged.loc[0, 'transaction details'])即可输出第一条交易的完整明细。

如果没有单独的唯一标识列,可以根据明细首行的特征生成分组ID,比如首行明细固定以时间开头:

# 匹配以HH:MM格式时间开头的行作为新分组的起始,累计生成组ID
df['group_id'] = df['transaction details'].str.match(r'^\d{2}:\d{2}').cumsum()
# 后续分组合并逻辑和上面一致

Excel手动处理(适合小批量数据)

  • 新增辅助列生成组ID,假设A列是仅首行有值的标识列,B列为辅助列,第二行输入公式=IF(A2<>"",MAX(B$1:B1)+1,B1),下拉填充所有行
  • 新增合并明细列,用TEXTJOIN函数按组拼接,公式示例:=TEXTJOIN(CHAR(10),TRUE,IF(B:B=D2,C:C,"")),输入后按Ctrl+Shift+Enter生效,其中D2为对应组ID,C列为交易明细列,勾选单元格自动换行即可展示分段效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:42:00