gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:20 26 4
gpt4 key购买 nike

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

我尝试使用:

import pandas as pd

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

print(data[data["Gender"] == 1])

这里我给男同学=1,女同学=0。但是,我不知道如何打印得分最高的男学生。

最佳答案

您可以使用 loc用于选择 Gendernlargest ,带有参数 n,如果您需要多个作为一个值:

n : int

Return this many descending sorted values

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 ,如 comment 中提到的 Edchum :

print data.loc[data['Gender']==1, 'Scores'].max()
8

或者使用groupby性别 nlargest对于所有性别:

print data.groupby('Gender')['Scores'].nlargest(n=2)
Gender
0 0 10
2 5
1 4 8
3 7
dtype: int64

如果你需要名字,你可以使用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

或者更简单的解决方案是使用 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

关于python - 如何使用 if 语句从 Python 中的两列中读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36032599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com