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

如何基于df2的B、C列条件筛选df1的行生成新DataFrame df3

嗨,我来帮你搞定这个需求!要从df1里筛选出和df2的B、C列完全匹配的行,生成新的DataFrame df3,有两种实用的pandas方法,我给你详细拆解下:

方法1:使用merge(推荐,逻辑清晰效率高)

merge是pandas处理数据匹配的利器,咱们可以指定以B和C列为匹配键,只保留df1中能和df2匹配上的行:

import pandas as pd

# 假设df1和df2已经是现成的DataFrame
df3 = pd.merge(df1, df2[["B", "C"]], on=["B", "C"], how="inner")

这里只取df2的B、C列来做匹配(避免引入df2的其他无关列),how="inner"会只保留两边都匹配成功的行,最终得到的df3就是你想要的结果。

方法2:用isin结合元组做行级判断

如果不想用merge,咱们可以把df2的B、C列组合成元组集合,然后直接判断df1的每一行是否符合匹配条件:

# 先把df2的B、C列打包成元组集合,方便快速查找
match_combinations = set(zip(df2["B"], df2["C"]))
# 筛选df1中B、C组合在集合里的行
df3 = df1[df1.apply(lambda row: (row["B"], row["C"]) in match_combinations, axis=1)]

这种方法更直观,适合小数据集;但如果数据量很大,merge的效率会更高哦。

另外要注意:如果df2里有重复的B、C组合,merge会把df1中对应的行重复匹配;而第二种方法会保留df1里的原行数,只要匹配成功就保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:50:53