如何校验df1的所有ParentID是否存在于df2中并提取不存在的记录
解法说明
要实现提取df1中ParentID不存在于df2的记录,用左连接即可完成,具体写法如下:
1. 基于merge实现(逻辑与你给出的参考语法完全对齐)
# 左连接两个表,匹配键为ParentID merged_df = df1.merge(df2, on="ParentID", how="left") # 筛选匹配后df2字段为空的记录,仅保留df1原有字段 result = merged_df[merged_df["Location"].isna()][["ParentID", "Name"]]
2. 基于DataFrame.join方法实现
如果你要严格用join方法,需要先把右表的连接键设置为索引:
result = df1.join( df2.set_index("ParentID"), on="ParentID", how="left" ).query("Location.isna()")[["ParentID", "Name"]]
补充:更简洁的非join实现
如果不需要强制用join,也可以直接用isin判断:
result = df1[~df1["ParentID"].isin(df2["ParentID"])]
以上三种写法最终输出的result和你给出的示例结果完全一致。
内容的提问来源于stack exchange,提问作者x89
相关产品推荐
相关产品推荐

