Pandas如何筛选满足多条件且Alumni_employment值重复的记录
问题分析
原有双重循环写法存在逻辑缺陷:
- 遍历对象是全量原始数据的
alumni_employment列,而非已经筛选好的美国2015年Top500高校子集 - 只要匹配到相等值就打印全量子集的高校名称,会产生大量无效重复输出,完全不符合需求
解决方案
直接使用Pandas内置的duplicated方法即可高效实现筛选逻辑,keep=False参数会将所有重复值对应的行全部标记为True,刚好匹配“只要值重复就保留所有对应行”的需求。
import pandas as pd import numpy as np # 读取数据 data = pd.read_csv("data/cwurData.csv") # 第一步:筛选满足【2015年、美国、世界排名≤500】的高校子集 americanuniv = data[(data['country'] == 'USA') & (data['year'] == 2015) & (data['world_rank'] <= 500)].copy() # 第二步:筛选alumni_employment列存在重复的行 result = americanuniv[americanuniv['alumni_employment'].duplicated(keep=False)] # 输出符合要求的高校名称 print(result['institution'])
可选扩展
如果需要查看每个重复的校友就业值对应哪些高校,可增加分组统计逻辑:
# 按alumni_employment分组,输出重复值对应的高校列表 duplicate_groups = result.groupby('alumni_employment')['institution'].apply(list) print(duplicate_groups)
内容的提问来源于stack exchange,提问作者MadMarx17
相关产品推荐
相关产品推荐

