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

如何用Pandas将非合并单元格转换为合并单元格?附场景示例

多行数据按ID合并为单行(保留原始顺序)的解决方案

需求说明

将Excel中同一ID对应的多行数据合并为单行,保留各字段值的原始顺序,仅做格式转换,无需聚合计算。

可行方案(基于Python pandas)

利用groupby分组后,通过聚合函数将每个分组内的字段值按原始顺序收集为列表,可按需转为分隔符连接的字符串。

步骤代码

import pandas as pd

# 1. 读取Excel文件(若日期为格式需解析,添加parse_dates参数)
df = pd.read_excel('你的文件路径.xlsx', parse_dates=['EFFECTIVE FROM DATE'])

# 2. 按ID分组,将每个字段转为列表(保留原始顺序)
merged_df = df.groupby('ID', as_index=False).agg(lambda x: x.tolist())

# 3. 可选:将列表转为逗号分隔的字符串(可自定义分隔符,比如换行符'\n')
for col in merged_df.columns[1:]:
    # 处理空值(nan),转为空字符串
    merged_df[col] = merged_df[col].apply(lambda x: ', '.join([str(i) if pd.notna(i) else '' for i in x]))

# 4. 保存合并后的结果到新Excel
merged_df.to_excel('合并结果.xlsx', index=False)

示例测试

针对你提供的示例数据,执行上述代码后,合并结果如下:

ID                          FINANCIAL CLASS RESTR               PAYOR RESTR  ... LOCATION RESTR            EFFECTIVE FROM DATE ACTIVE FLAG
0  80  BLUE CROSS, COMMERCIAL, COMMERCIAL, MEDICARE, COMMERCIAL  200001, 100001, 100009, 400001, 100060  ... , , , ,  2000-01-01, 1995-08-01, 2022-10-01, 2000-01-01, 1995-01-01  1, 1, 1, 1, 1

(注:示例中的日期数字已转为实际日期格式)

关键说明

  • groupby默认会保留组内数据的原始顺序,只要读取的Excel数据顺序未被打乱。
  • 若需要其他分隔形式(如换行、分号),只需修改join中的分隔符即可。
  • 空值nan会被转为空字符串,避免合并后出现nan字样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:20:19