如何使用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 allGender
一起使用:
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