You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas如何筛选ID后缀不存在于另一DataFrame的指定行

实现方法

核心思路

先提取DF1中每个ID的x字符后段的后缀,再匹配DF2的ID字段,过滤出后缀不在DF2 ID中的行即可。

分步实现

  • 提取DF1 ID字段的后缀:用str.split('x', n=1).str[-1]按第一个x分割ID,取后半段作为后缀,避免ID含多个x时分割出错
  • 将DF2的ID字段转为集合,大幅提升后续匹配效率
  • 用反向isin判断过滤出符合要求的DF1行

代码示例

写法1(不修改原DF1,无临时列)

df2_ids = set(df2["ID"])
result = df1[~df1["ID"].str.split("x", n=1).str[-1].isin(df2_ids)]

写法2(显式生成临时后缀列,方便调试)

# 生成临时后缀列
df1["id_suffix"] = df1["ID"].str.split("x", n=1).str[-1]
df2_ids = set(df2["ID"])
# 过滤后删除临时列
result = df1[~df1["id_suffix"].isin(df2_ids)].drop(columns=["id_suffix"])

注意:如果你的DF2数据量很小,也可以直接用df2["ID"]代替上面的集合,但数据量超过1万条时用集合性能优势会非常明显。

内容的提问来源于stack exchange,提问作者paidsponsor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:54:03