如何批量将数据集列内唯一字符串替换为对应递增整数值
解决方案
直接对应两个核心疑问给出可落地的实现方法:
1. Excel完全可以实现需求,不需要手动完成300次替换
两种方法可选,全程操作不超过1分钟:
- 辅助列公式法(无需写代码)
假设三字母数据存在A列,从A1单元格开始:- 点击B1单元格,输入公式:
=IF(COUNTIF(A$1:A1,A1)=1,MAX(B$1:B1)+1,VLOOKUP(A1,A$1:B1,2,0)) - 选中B1单元格,鼠标移到单元格右下角,等光标变成黑色十字后双击,公式会自动填充到所有有数据的行,直接生成全部对应编号
- 如果需要替换原列内容,只要选中B列所有结果,复制后右键点击A1,选择「粘贴为值」,再删除B列即可。
- 点击B1单元格,输入公式:
- VBA一键法(直接修改原列,无需辅助列)
- 按
Alt+F11打开VBA编辑器,右键点击当前工作簿名称,选择「插入-模块」 - 粘贴以下代码到模块编辑区:
Sub FirstOccurrenceToNum() Dim dict As Object, rng As Range, lastRow As Long, cnt As Long Set dict = CreateObject("Scripting.Dictionary") ' 以下代码默认处理A列从A1开始的数据,可根据实际位置修改列标和起始行 lastRow = Cells(Rows.Count, "A").End(xlUp).Row For Each rng In Range("A1:A" & lastRow) If Not dict.Exists(rng.Value) Then cnt = cnt + 1 dict.Add rng.Value, CStr(cnt) End If rng.Value = dict(rng.Value) Next End Sub- 按F5运行代码,回到Excel就能看到原列已经全部替换为目标编号结果。
- 按
2. 编程实现成本极低,不需要特殊第三方库
如果不想用Excel,哪怕只会基础Python,10行以内代码就能搞定,总耗时不会超过5分钟,效率远高于手动替换。
以纯Python处理文本数据为例,逻辑非常简单:
# 读取数据,每行一个三字母字符串 with open("你的数据路径.txt", "r", encoding="utf-8") as f: raw_data = [line.strip() for line in f if line.strip()] str_map = {} result = [] num = 1 for s in raw_data: if s not in str_map: str_map[s] = str(num) num += 1 result.append(str_map[s]) # 写入处理结果 with open("处理后结果.txt", "w", encoding="utf-8") as f: f.write("\n".join(result))
如果是Excel格式的数据,只要安装pandas和openpyxl两个常用库,3行代码就能完成读取、处理、写回全流程,不需要编写复杂逻辑。
内容的提问来源于stack exchange,提问作者Versus0289
相关产品推荐
相关产品推荐

