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

如何在Pandas中根据不同DataFrame列值相等筛选数据?

问题原因

你写的df1.A == df2.B是在逐行对比两个Series的值,Pandas要求这种对比必须是索引完全一致的Series才能执行,所以抛出了ValueError。但你的实际需求是筛选df1里A列的值在df2的B列中出现过的行,显然不该用逐行对比的逻辑。

最优解决方法

1. 先筛选出所有符合条件的行

用isin()方法直接判断df1.A的每个值是否在df2.B的集合里,这是Pandas处理这类需求的标准写法,不用改列名:

df_filtered = df1[df1['A'].isin(df2['B'])]

运行后得到的结果是所有A列值在df2.B中存在的行:

A
0  apple
1   pear
2  orange
3  apple

2. 匹配你的示例输出(去重保留首次出现)

如果要和你给出的示例输出完全一致(每个唯一值只保留第一行),在上面的基础上加上drop_duplicates():

df_filtered = df1[df1['A'].isin(df2['B'])].drop_duplicates(subset='A', keep='first')

执行后就得到你想要的结果:

A
0  apple
2  orange

补充说明

  • isin()的效率很高,适合处理大数据量的情况;
  • drop_duplicates()的参数可以调整:keep='last'会保留每个值的最后一行,keep=False会删除所有重复的行;
  • 全程不需要修改任何列名,完全满足你的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:10:26