如何使用map函数多条件匹配并填充DataFrame的空ID字段
解决方法
你可以将lookup预处理为以(Type, Name)元组为键的映射字典,再取待填充行的对应两列组成元组匹配即可,修改后的代码如下:
# 构造双条件匹配的映射字典 lookup_map = {(item["Type"], item["Name"]): item["ID"] for item in lookup} # 仅对ID为空的行做双条件匹配填充 df.loc[df["ID"].isnull(), "ID"] = df.loc[df["ID"].isnull(), ["Type", "Name"]].apply(tuple, axis=1).map(lookup_map)
运行效果
你提供的样例DataFrame执行代码后结果如下:
| ID | Type | Name | Enabled |
|---|---|---|---|
| 70B52DA6-F099-4D01-BBD0-03EA97292C26 | A | Galaxy Puzzle | TRUE |
| 442B1598-20CF-4425-8A28-0438FBF77C46 | B | Car Toy | TRUE |
| 4EB3D322-7A25-4A67-9053-28955383DD1F | B | Car Toy | FALSE |
完全符合仅填充空ID、已有ID不修改的需求。
内容的提问来源于stack exchange,提问作者Tung Nguyen
相关产品推荐
相关产品推荐

