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

OpenRefine使用问题:如何将拆分的多行数据合并为单条记录?

同ID多行日期合并为单行的实现方案

以下是不同常用场景下的操作方法:

Excel 方案(小体量数据首选)

  • 如果你使用的是Excel 365/2021及以上版本:
    1. 选中全部数据区域,切换到「数据」选项卡,选择「来自表格/区域」导入Power Query编辑器
    2. 选中ID列,点击「分组依据」,分组列选ID,新列名自定义为「合并日期」,操作选「连接值」,分隔符按需选择逗号、换行符等即可
  • 如果你使用的是旧版本Excel,直接用公式实现:
    在空白列第二行输入公式 =TEXTJOIN(",",TRUE,IF($A$2:$A$[你的数据最大行号]=A2,$B$2:$B$[你的数据最大行号],"")),按Ctrl+Shift+Enter触发数组公式生效,下拉填充后对ID列去重即可。

Python Pandas 方案(中大体量数据首选)

核心用groupby聚合实现,示例代码如下:

import pandas as pd
# 读取数据,可按需替换为read_excel等方法
df = pd.read_csv("你的数据文件路径")

# 合并为逗号分隔的单日期列
merge_result = df.groupby("ID", as_index=False)["日期"].agg(",".join)

# 如果需要把日期拆分为多列(date1、date2……),用以下代码
expand_result = df.groupby("ID")["日期"].apply(list).apply(pd.Series).reset_index()
expand_result.columns = ["ID"] + [f"date_{i+1}" for i in range(expand_result.shape[1]-1)]

SQL 方案(数据库内数据首选)

不同数据库的聚合函数略有差异,对应语法如下:

  • MySQL:SELECT ID, GROUP_CONCAT(日期 SEPARATOR ',') AS all_dates FROM 你的表名 GROUP BY ID;
  • PostgreSQL:SELECT ID, STRING_AGG(日期::VARCHAR, ',') AS all_dates FROM 你的表名 GROUP BY ID;
  • SQL Server:SELECT ID, STRING_AGG(CAST(日期 AS VARCHAR), ',') AS all_dates FROM 你的表名 GROUP BY ID;

原问题数据集示例:
数据集截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:06:13