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])dataCourse Name Number Score1 Eng A 0001 812 Geo A 0001 753 Eng B 0002 764 Geo B 0002 905 Eng C 0003 816 Geo C 0003 1007 Bio C 0003 90我想要的是只返回名字C,因为C是唯一一个在每个主题上得分都超过80的人
3 回答
胡子哥哥
TA贡献1825条经验 获得超6个赞
您可以使用filter后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
慕少森
TA贡献2019条经验 获得超9个赞
一个groupby就是你想要的
grouped = data.groupby('Name').min()
print(grouped.loc[grouped['Score']>80].index[0])
这会给你
Out[1]: ['C']
添加回答
举报
0/150
提交
取消