如何检查数据框列值是否存在于另一列并提取对应ID生成新列
解决方案
使用pandas的映射匹配功能即可实现需求,无需手动编写循环遍历逻辑,运行效率更高。
完整代码
import pandas as pd # 读取csv文件 df = pd.read_csv("你的文件路径.csv") # 构建Number1到对应ID的映射字典 id_map = df.set_index("Number1")["ID"].to_dict() # 生成ID2列,匹配不到则填充NO MATCH df["ID2"] = df["Number2"].map(id_map).fillna("NO MATCH") # 导出结果到新的csv文件 df.to_csv("输出结果.csv", index=False)
逻辑说明
- 首先构建全量
Number1值到对应ID的映射字典,一次构建即可复用,查询效率远高于逐行循环遍历 - 使用
map方法对Number2列的每个值批量查询映射字典,未匹配到的值会自动返回空值,最后用fillna统一填充为NO MATCH - 逻辑完全符合全列匹配规则,不会出现逐行比对的错误
拿你提供的示例数据运行上述代码,输出结果和你给出的预期完全一致。
内容的提问来源于stack exchange,提问作者qnt13
相关产品推荐
相关产品推荐

