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

如何提取双列均匹配另一DataFrame子串的DataFrame行

嘿,我来帮你搞定这个pandas筛选的需求!下面是具体的实现步骤和代码:

步骤1:初始化DataFrame

首先确保已经导入pandas库,然后把你给出的两个DataFrame创建出来(这里把int改成int_df啦,避免和Python内置的int类型冲突):

import pandas as pd

int_df = pd.DataFrame({'domain1':['ABC.6','GF53.7','SDC78.12','GGH7T.64'], 
                       'domain2': ['UI76.89','76TH3.2','YU1QW.45','BY76.12']})

doms = pd.DataFrame({'domains':['GF53','VB96','UI76','GGH7T','BY76','ABC','SDC78']})
步骤2:准备子串集合

把doms里的域名子串转成集合,这样后续检查子串是否存在的效率会更高:

domain_subs = set(doms['domains'])
步骤3:定义筛选逻辑

咱们需要判断每个单元格的字符串是否包含集合里的任意一个子串,用lambda表达式就能轻松实现:

has_valid_sub = lambda s: any(sub in s for sub in domain_subs)
步骤4:执行筛选

对int_df的domain1和domain2列分别应用上面的判断逻辑,只保留两列都满足条件的行:

result = int_df[int_df['domain1'].apply(has_valid_sub) & int_df['domain2'].apply(has_valid_sub)]
查看结果

运行代码后打印result,就能得到你想要的输出:

domain1   domain2
0      ABC.6  UI76.89
3  GGH7T.64  BY76.12

小提示

  • 用集合而不是列表来存储子串,是因为集合的成员查找操作比列表快得多,数据量大的时候优势更明显。
  • 变量名尽量避开Python的内置关键字/类型,比如原来的int就容易引发潜在问题,换成int_df这类命名会更安全清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:37:34