相同ID对应多行单词数据合并为单行的实现方法咨询
需求实现说明
这个需求完全可以实现,属于典型的分组后字符串聚合拼接场景,所有主流数据处理工具都支持该操作,下面是不同使用场景下的具体实现方案:
1. 关系型数据库场景
假设你的数据存储在数据库表word_records中,不同数据库的实现SQL如下:
- MySQL 写法:
SELECT id, GROUP_CONCAT(word SEPARATOR ' ') AS word FROM word_records GROUP BY id;
如果需要对拼接的单词按指定顺序排序,可以调整为GROUP_CONCAT(word ORDER BY word SEPARATOR ' ')。
- PostgreSQL 写法:
SELECT id, STRING_AGG(word, ' ' ORDER BY word) AS word FROM word_records GROUP BY id;
- Oracle 写法:
SELECT id, LISTAGG(word, ' ') WITHIN GROUP (ORDER BY word) AS word FROM word_records GROUP BY id;
2. Python Pandas 场景
如果是用Pandas处理结构化数据,实现代码如下:
import pandas as pd # 原始数据存为DataFrame对象df result = df.groupby('id', as_index=False)['word'].agg(' '.join)
如果需要自定义拼接顺序,先对数据集排序再分组即可:
result = df.sort_values('word').groupby('id', as_index=False)['word'].agg(' '.join)
3. Excel 场景
如果数据存储在Excel表格中,A列为id、B列为word,首行为表头:
- 先在空白列(比如D列)填写所有唯一的id值:1、2、3
- E2单元格输入公式,按回车即可(旧版Excel需要按
Ctrl+Shift+Enter触发数组公式):
=TEXTJOIN(" ",TRUE,IF($A$2:$A$16=D2,$B$2:$B$16,""))
- 将E2公式下拉填充到所有id行即可完成拼接。
注:你给出的示例结果中id=2的拼接结果包含原始数据不存在的
begin单词,常规拼接操作不会生成原始数据外的内容,如果需要插入自定义内容,可以在对应实现逻辑中额外添加插入规则即可。
内容的提问来源于stack exchange,提问作者ozgur
相关产品推荐
相关产品推荐

