如何用DataFrame的Corrected_Name替换列表中匹配的Name元素?
用Pandas将列表字符串匹配DataFrame替换修正值
核心思路
把DataFrame里的Name和Corrected_Name转换成键值对字典,然后遍历列表,用字典的get()方法快速匹配替换——找到对应键就返回修正值,找不到就保留原字符串,简单高效。
具体步骤(附示例代码)
- 导入依赖库
import pandas as pd
- 构造示例数据(替换成你的真实数据即可)
# 原始列表 F = ["Jonii", "Max", "anna", "xyz"] # 修正规则DataFrame df = pd.DataFrame({ "Name": ["Jonii", "anna"], "Corrected_Name": ["Jon", "Anna"] })
- 创建名称映射字典
把DataFrame的Name列作为键,Corrected_Name作为值,转成字典:
name_mapping = df.set_index("Name")["Corrected_Name"].to_dict()
此时name_mapping的内容为:{"Jonii": "Jon", "anna": "Anna"}
- 遍历列表完成替换
用列表推导式遍历原列表,借助字典的get()方法实现替换:
f = [name_mapping.get(item, item) for item in F]
get(item, item)的逻辑:如果item在字典的键中,返回对应的修正值;否则返回item本身。
- 查看结果
print(f) # 输出:['Jon', 'Max', 'Anna', 'xyz']
进阶:不区分大小写匹配
如果需要忽略大小写(比如列表里的Anna和DataFrame里的anna也要匹配),可以统一转换成小写(或大写)构建映射:
# 构建不区分大小写的映射字典 name_mapping_case_insensitive = df.set_index(df["Name"].str.lower())["Corrected_Name"].to_dict() # 遍历列表时同步转小写匹配 f_case_insensitive = [name_mapping_case_insensitive.get(item.lower(), item) for item in F]
内容的提问来源于stack exchange,提问作者Asif Sayed
相关产品推荐
相关产品推荐

