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

如何基于两个DataFrame共有的Date、About列匹配值过滤DataFrame A的行

实现方案

你可以通过以下两种高效方法实现双字段同时匹配的过滤需求:

方法1:使用merge内连接(推荐,大数据量下性能更优)

利用Pandas merge的内连接特性,直接取两个DataFrame中Date和About同时匹配的行,且会完整保留DataFrame A的所有原有字段:

# 仅取B的两个匹配字段做内连接,避免多余字段混入结果
df_A = df_A.merge(df_B[['Date', 'About']], on=['Date', 'About'], how='inner')

方法2:元组集合匹配

将两个字段组合为元组作为唯一匹配键,判断A的行键是否存在于B的键集合中:

# 先构建B的双字段匹配键集合
match_keys = set(zip(df_B['Date'], df_B['About']))
# 过滤A中符合条件的行
df_A = df_A[df_A.apply(lambda row: (row['Date'], row['About']) in match_keys, axis=1)]

原代码问题说明

你之前的写法仅校验了Date字段是否在B中存在,没有关联校验About字段,所以会出现Date匹配、但About不匹配的无效行被保留的问题,比如示例中24-10-2020对应的Mare行,Date存在于B中,但B对应日期的About为Koen,不符合要求所以会被上述两种方法正确过滤。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:24:02