如何基于指定列(如Col_4)合并表格中的多行?
基于指定列合并多行数据的实现方法
先还原你的原始表格和预期效果:
原始表格
| Col_1 | Col_2 | Col_3 | Col_4 | Col_5 |
|---|---|---|---|---|
| A | B | C | X | 1 |
| A | B | C | X | 2 |
| D | E | F | Y | 3 |
| D | E | F | Y | 4 |
| D | E | F | Y | 5 |
预期效果
| Col_1 | Col_2 | Col_3 | Col_4 | Col_5 |
|---|---|---|---|---|
| A | B | C | X | 1,2 |
| D | E | F | Y | 3,4,5 |
下面分三种常用场景给出实现方案:
Excel(Power Query 可视化操作)
适合普通Excel用户,无需写代码:
- 选中表格所有数据,点击顶部「数据」选项卡 → 「从表格/区域」,确认数据包含表头后进入Power Query编辑器。
- 在编辑器里选中Col_4列,点击「转换」选项卡 → 「分组依据」。
- 在弹出的分组设置窗口中:
- 把Col_1、Col_2、Col_3、Col_4都加入「分组依据」(因为同一Col_4分组下这些列值一致)
- 新增聚合列:名称填「Col_5」,操作选「合并行」,分隔符选择「逗号」
- 点击确定后就能看到合并结果,最后点击「关闭并上载」,把结果导出到Excel表格即可。
Python Pandas 代码实现
适合有编程基础的用户,批量处理数据更高效:
import pandas as pd # 模拟原始数据(实际可通过pd.read_excel/pd.read_csv读取文件) df = pd.DataFrame({ 'Col_1': ['A', 'A', 'D', 'D', 'D'], 'Col_2': ['B', 'B', 'E', 'E', 'E'], 'Col_3': ['C', 'C', 'F', 'F', 'F'], 'Col_4': ['X', 'X', 'Y', 'Y', 'Y'], 'Col_5': ['1', '2', '3', '4', '5'] }) # 按指定列分组,合并Col_5为逗号分隔的字符串 merged_df = df.groupby(['Col_1', 'Col_2', 'Col_3', 'Col_4'])['Col_5'].agg(','.join).reset_index() # 调整列顺序和原始表格一致(可选) merged_df = merged_df[['Col_1', 'Col_2', 'Col_3', 'Col_4', 'Col_5']] # 输出或保存结果 print(merged_df) # merged_df.to_excel('合并结果.xlsx', index=False)
SQL 数据库实现
如果数据存储在数据库中,用GROUP BY结合聚合函数即可:
MySQL/MariaDB
SELECT Col_1, Col_2, Col_3, Col_4, GROUP_CONCAT(Col_5 SEPARATOR ',') AS Col_5 FROM your_table GROUP BY Col_1, Col_2, Col_3, Col_4;
PostgreSQL/SQL Server
SELECT Col_1, Col_2, Col_3, Col_4, STRING_AGG(Col_5, ',') AS Col_5 FROM your_table GROUP BY Col_1, Col_2, Col_3, Col_4;
内容的提问来源于stack exchange,提问作者Isaac A
相关产品推荐
相关产品推荐

