You need to enable JavaScript to run this app. 如何在Python中基于一列的值查找另一列的完全匹配项
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中基于一列的值查找另一列的完全匹配项

问题说明

现有包含A、B两列的示例DataFrame如下:

A     B
123  555
456  123
789  666

需要筛选输出同时存在于B列中的A列值,示例对应输出为123。
原有代码运行时报错argument of type 'float' is not iterable。

错误原因
  • 逻辑误区:原有代码中row.A in row.B是判断当前行的A值是否属于当前行的B值,而需求是判断当前A值是否属于整个B列的所有值,二者逻辑完全不符
  • 语法报错原因:row.B是单个数值(报错提示float大概率是实际数据中存在缺失值,被pandas自动转为float类型),in运算符要求右侧是可迭代对象,单个数值无法迭代,因此触发报错。
正确实现方法

优先推荐pandas向量化操作,执行效率远高于遍历行的写法:

# 筛选出A列值在B列中存在的行,提取A列值
result = df.loc[df['A'].isin(df['B']), 'A']
# 打印结果
print(result)

如果需要输出为列表格式,可以追加.tolist()方法。

如果一定要调整原有遍历写法,修改如下即可运行,但不推荐用于1000行以上的DataFrame:

# 提前把B列的值转成集合,判断存在的效率更高
b_values = set(df['B'].values)
for i, row in df.iterrows():
    if row.A in b_values:
        print(row.A)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 10:06:03