如何将Pandas列值替换为连续递增数值 适配大规模数据集
需求说明
现有如下测试数据集:
import pandas as pd data = {'Account':['Paul','Jenn']} df = pd.DataFrame(data=data)
需要实现规则:将Account列中的Paul替换为数值1,Jenn替换为数值2。要求实现逻辑基于for循环编写,可直接适配规模更大的数据集,完成账户名称到对应数值的批量替换。
实现代码
核心思路是先把账户名和替换值的对应关系抽成独立的映射字典,再通过循环遍历映射规则完成批量替换,后续新增替换规则只需要修改字典即可,不需要调整循环逻辑,适配大规模数据集场景:
# 维护账户名-目标数值的映射,新增替换规则直接追加字典键值对即可 account_mapping = { "Paul": 1, "Jenn": 2 } # 初始化存储替换结果的列,如需覆盖原列可直接操作df['Account'] df["account_code"] = 0 # for循环遍历映射规则完成批量替换 for name, code in account_mapping.items(): df.loc[df["Account"] == name, "account_code"] = code
实现效果
执行代码后输出的DataFrame如下:
| Account | account_code |
|---|---|
| Paul | 1 |
| Jenn | 2 |
- 该方案逻辑和配置解耦,哪怕后续需要替换上百个不同的账户值,只需要往
account_mapping里追加对应键值对即可 - 赋值逻辑基于pandas原生的loc定位实现,在十万、百万级的大数据集上运行也能保持较好的性能
- 匹配逻辑精准,不会出现错配、漏配的问题
内容的提问来源于stack exchange,提问作者Paul Corcoran
相关产品推荐
相关产品推荐

