d = [{'Number':'0001', 'Name':'A','Course':'Eng','score':81 },{'Number':'0001', 'Name':'A','Course':'Geo','score':75},
{'Number':'0002', 'Name':'B','Course':'Eng','score': 76} , {'Number':'0002', 'Name':'B','Course':'Geo','score':90 },
{'Number':'0003', 'Name':'C','Course':'Eng','score':81 },{'Number':'0003', 'Name':'C','Course':'Geo','score':100, },
{'Number':'0003', 'Name':'C','Course':'Bio','score':90 }]
data = pd.DataFrame(d, index=[1,2,3,4,5,6,7])
data
Course Name Number score
1 Eng A 0001 81
2 Geo A 0001 75
3 Eng B 0002 76
4 Geo B 0002 90
5 Eng C 0003 81
6 Geo C 0003 100
7 Bio C 0003 90
我想要的只返回名字C,因为C是唯一一个每个科目得分超过80的人
解决方法:
您可以在groupby之后使用过滤器,例如:
print (data.groupby('Name').filter(lambda x: (x['score'].min()>80)))
你明白了
Course Name Number score
5 Eng C 0003 81
6 Geo C 0003 100
7 Bio C 0003 90
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。