### 🔧 合并多行相同数据的实用方法(附代码示例) #### ✅ 通用思路: 1. **识别重复项** → 2. **聚合内容** → 3. **保留唯一记录** 核心是通过某个字段判断是否属于同一组数据,然后将这些行的非关键字段合并存储。 --- #### 💻 Python实现方案(Pandas库): python import pandas as pd # 假设原始数据是这样的DataFrame: data = { 'ID': ['A001', 'A001', 'A002', 'A002'], 'Name': ['张三', '张三', '李四', '李四'], 'Score': [85, 90, 78, 88] } df = pd.DataFrame(data) # 按ID分组后,用逗号连接其他列的值 result = df.groupby('ID').agg(lambda x: ','.join(map(str, x))).reset_index() print(result) 输出效果: | ID | Name | Score | |------|-----------|-----------------| | A001 | 张三,张三 | 85,90 | | A002 | 李四,李四 | 78,88 | 👉 **进阶技巧**:如果想自定义分隔符或处理复杂结构,可以用 `apply()` + 列表推导式: python def merge_rows(sub_df): return pd.Series({ 'Names': ";".join(sub_df['Name']), # 分号分隔姓名 'AllScores': str(sub_df['Score'].tolist()) # 转为带方括号的列表字符串 }) merged_data = df.groupby('ID').apply(merge_rows).reset_index() --- #### 📝 SQL解决方案(MySQL示例): sql SELECT ID, GROUP_CONCAT(Name SEPARATOR ' / ') AS Names, GROUP_CONCAT(Score SEPARATOR '→') AS ScoreSequence FROM table_name GROUP BY ID; 执行结果会像: | ID | Names | ScoreSequence | |------|------------|-------------------| | A001 | 张三/张三 | 85→90 | --- #### 💡 注意事项: 1️⃣ 如果存在数值型字段需要计算总和/平均值时,改用聚合函数: python df.groupby('ID').agg({'Score': ['sum', 'mean']}) 2️⃣ 大数据量建议先排序再分组,避免跨页断点错误 3️⃣ Excel用户可用「数据透视表」实现类似效果