如何在DataFrame某列值存在于指定列表时返回对应行另一列取值
实现方案
方法1:for循环实现(仅适合小数据集)
- 逐行遍历DataFrame,判断当前行
B列值是否存在于列表C中 - 满足条件时将对应
A列值追加到结果列表
示例代码:
result = [] for _, row in df.iterrows(): if row["B"] in C: result.append(row["A"])
方法2:isin()实现(官方推荐,性能更高)
isin()是pandas内置的向量化判断函数,比手动写for循环快几十到上百倍,代码更简洁:
- 用
df["B"].isin(C)生成布尔掩码,标记所有B列值在C中的行 - 用掩码筛选行后取
A列,直接转列表即可
示例代码:
result = df[df["B"].isin(C)]["A"].tolist()
测试样例验证
假设输入数据如下:
import pandas as pd df = pd.DataFrame({"A": [1,2,3,4,5], "B": ["a","b","c","a","d"]}) C = ["a", "c"]
两种方法返回的结果均为[1, 3, 4],符合需求。
内容的提问来源于stack exchange,提问作者MADBOWLofSOUP
相关产品推荐
相关产品推荐

