有条件的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的人

http://img4.mukewang.com/60a36d200001b31703530263.jpg

小怪兽爱吃肉
浏览 133回答 3
3回答

胡子哥哥

您可以使用filter后groupby如:print (data.groupby('Name').filter(lambda x: (x['Score'].min()>80)))你得到  Course Name Number  Score5    Eng    C   0003     816    Geo    C   0003    1007    Bio    C   0003     90

慕少森

一个groupby就是你想要的grouped = data.groupby('Name').min()print(grouped.loc[grouped['Score']>80].index[0])这会给你Out[1]: ['C']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python