如何使用if语句读取Python中的两列?

如何使用if语句读取Python中的两列?,python,csv,pandas,Python,Csv,Pandas,我有一个名为students.csv的文件。有几列。我想对两列使用if语句,即gender和scores。我想展示得分最高的男生(按降序排列)。因此,我需要编写一个脚本,可以从csv文件中读取并结合这两列(性别和分数) 我尝试使用: import pandas as pd data = pd.read_csv('students.csv') print(data[data["Gender"] == 1]) 在这里,我给了男学生=1,女学生=0。 但是,我不知道如何打印得分最高的男生。您

我有一个名为
students.csv
的文件。有几列。我想对两列使用
if
语句,即
gender
scores
。我想展示得分最高的男生(按降序排列)。因此,我需要编写一个脚本,可以从csv文件中读取并结合这两列(性别和分数)

我尝试使用:

import pandas as pd

data = pd.read_csv('students.csv')

print(data[data["Gender"] == 1])  
在这里,我给了男学生=1,女学生=0。 但是,我不知道如何打印得分最高的男生。

您可以使用来选择
性别
,如果您需要多个值,可以使用参数
n

n:int

返回这么多降序排序的值

如果您只需要最高分,请使用中提到的
Edchum

或由
Gender
与for all
Gender
一起使用:

print data.groupby('Gender')['Scores'].nlargest(n=2)
Gender   
0       0    10
        2     5
1       4     8
        3     7
dtype: int64
如果需要名称,您可以通过
索引使用:

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
如果您只需要一个性别,请使用:

或者再次使用更简单的解决方案:

你也可以使用

pandas.DataFrame.sort_values(by='Scores')
您可以在pandas中使用.max()命令

import pandas as pd

df = pd.read_csv("student.csv")

data = df[df["Gender"]==1].max()

print data
输出:

stud       daniel
Gender     1
marks     78
dtype: object

您需要对过滤后的df进行排序,或者只获取该列的最大值
data.loc[data['Gener']==1,'Scores'].max()
谢谢大家。我认为NLAGEST更适合我的工作。还有一件事,我能把学生的名字和结果加在一起吗?。我的意思是,我也想展示得分最高的学生的名字。谢谢耶兹雷尔-太好了。因为我只需要显示男生,所以我尝试了:df=pd.merge(data['Names']],data.groupby['Gender']==1,我完成了脚本。但我没有给我男生!!答案已编辑,请检查。如果我的答案有帮助,请不要忘记。谢谢。
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
pandas.DataFrame.sort_values(by='Scores')
import pandas as pd

df = pd.read_csv("student.csv")

data = df[df["Gender"]==1].max()

print data
stud       daniel
Gender     1
marks     78
dtype: object