微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pandas Python有条件

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的人

enter image description here

解决方法:

您可以在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] 举报,一经查实,本站将立刻删除。

相关推荐