如何使用循环按条件提取DataFrame另一列的匹配值
提取DataFrame中role为lead对应empid的实现方法
你可以通过两种方式实现需求,优先使用Pandas原生向量化操作,性能远高于手动遍历。
方法1:布尔索引(推荐,无需遍历)
这是Pandas官方推荐的标准写法,不需要手动遍历列:
import pandas as pd # 构造示例DataFrame,你有现成的df可以跳过这步 df = pd.DataFrame({ 'empid': [123, 124, 125, 156, 129], 'role': ['lead', 'lead', 'manager', 'lead', 'manager'] }) # 提取符合条件的empid,转为列表存储到变量中 lead_empids = df.loc[df['role'] == 'lead', 'empid'].tolist()
执行后lead_empids的结果为[123, 124, 156],如果不需要转列表、保留Series格式,去掉末尾的.tolist()即可。
方法2:遍历实现(仅特殊场景使用)
如果要求必须通过遍历role列的逻辑实现,可以用以下两种写法:
- 写法1:通过iterrows遍历全表
lead_empids = [] for _, row in df.iterrows(): if row['role'] == 'lead': lead_empids.append(row['empid'])
- 写法2:直接遍历两列的值(性能优于iterrows)
lead_empids = [] for empid, role in zip(df['empid'], df['role']): if role == 'lead': lead_empids.append(empid)
内容的提问来源于stack exchange,提问作者Shagun
相关产品推荐
相关产品推荐

