Python处理Excel:将匹配A列的对应字符串移至新列实现行去重合并
问题解决方案
方案1:Excel内置功能实现(无需编码)
适合零代码基础的用户,操作步骤如下:
- 先备份原始Excel文件,避免操作失误丢失数据
- 选中原始表的A列,点击顶部「数据」选项卡→「删除重复值」,弹窗中仅勾选A列,确认后得到A列所有唯一值,将这部分唯一值连同表头复制到新工作表的A列
- 在新工作表的B2单元格(表头默认在第1行)输入公式:
=INDEX(原表!$B:$B,SMALL(IF(原表!$A:$A=$A2,ROW(原表!$A:$A),99999),COLUMN(A1)))
如果是Excel 2019及更早版本,输入完成后按 Ctrl+Shift+Enter 激活数组公式;Excel 365/2021版本直接回车即可 - 将B2单元格的公式向右拖动到足够多的列数(比如A列最多有5个重复值就拖到F列),再向下拖动覆盖所有A列唯一值,即可自动填充对应B列的内容到后续列
方案2:Python代码实现(适合批量/重复操作)
600行数据处理速度极快,操作难度低:
- 先安装依赖库:打开命令提示符/终端,输入以下命令回车执行
pip install pandas openpyxl - 新建文本文档,将后缀改为
.py,复制以下代码到文件中,仅需修改文件路径为你自己的文件路径即可:
import pandas as pd # 读取原始Excel,替换为你自己的文件路径 df = pd.read_excel("你的原始文件.xlsx", usecols=["Column A", "Column B"]) # 按A列分组,将对应B列内容拆分到多列 output = df.groupby("Column A")["Column B"].apply(list).apply(pd.Series).reset_index() # 自动按规则重命名列 output.columns = ["Column A"] + [f"Column {chr(ord('B') + i)}" for i in range(len(output.columns)-1)] # 导出结果到新Excel output.to_excel("处理后结果.xlsx", index=False)
- 保存文件后双击运行,或者在命令行中执行该py文件,运行完成后同目录下生成的「处理后结果.xlsx」就是符合要求的文件
内容的提问来源于stack exchange,提问作者Nathaniel
相关产品推荐
相关产品推荐

