可以使用loc
選擇Gender
和nlargest
,與參數n
,如果你需要更多的作爲一個價值觀:
ñ:整數
返回這麼多的降序排序值
print data
Scores Gender
0 10 0
1 5 1
2 5 0
3 7 1
4 8 1
5 3 0
print data.loc[data['Gender']==1, 'Scores'].nlargest(n=3)
4 8
3 7
1 5
Name: Scores, dtype: int64
如果你只需要得分最高,使用max
,如前所述Edchum
在comment:
print data.loc[data['Gender']==1, 'Scores'].max()
8
或者通過Gender
與nlargest
使用groupby
所有Gender
:
print data.groupby('Gender')['Scores'].nlargest(n=2)
Gender
0 0 10
2 5
1 4 8
3 7
dtype: int64
如果你需要的名字,你可以indexes
使用merge
:
print data
Names Scores Gender
0 a 10 0
1 b 5 1
2 c 5 0
3 d 7 1
4 e 8 1
5 f 3 0
print data.groupby('Gender')['Scores'].nlargest(n=2).reset_index(level=0,name='Max')
Gender Max
0 0 10
2 0 5
4 1 8
3 1 7
df =pd.merge(data[['Names']],
data.groupby('Gender')['Scores'].nlargest(n=2).reset_index(level=0, name='Max'),
left_index=True,
right_index=True)
Names Gender Max
0 a 0 10
2 c 0 5
4 e 1 8
3 d 1 7
如果你只需要一個Gender
,使用concat
:
print data
Names Scores Gender
0 a 10 0
1 b 5 1
2 c 5 0
3 d 7 1
4 e 8 1
5 f 3 0
print data.loc[data['Gender']==1, 'Scores'].nlargest(n=2)
4 8
3 7
Name: Scores, dtype: int64
print pd.concat([data['Names'],
data.loc[data['Gender']==1, 'Scores'].nlargest(n=2)],
axis=1,
join='inner')
Names Scores
4 e 8
3 d 7
或者simplier解決方案是再次使用loc
:
print data
Names Scores Gender
0 a 10 0
1 b 5 1
2 c 5 0
3 d 7 1
4 e 8 1
5 f 3 0
print data.loc[data['Gender'] == 1, 'Scores'].nlargest(n=2).index
Int64Index([4, 3], dtype='int64')
print data.loc[data.loc[data['Gender'] == 1,'Scores'].nlargest(n=2).index,['Names','Scores']]
Names Scores
4 e 8
3 d 7
你需要排序的過濾DF或者只是得到該列'data.loc的最大值[數據[ '根兒'] == 1, '分數'] MAX() ' – EdChum