2017-05-26 46 views
1

比方说,我有一个CSV文件,其内容布尔索引的列值存储为一个变量在python

Student_Name Grade 
Mary  75 
John  65 
Stella 90 

我想Stella的等级存储为一个变量。 我当前的代码看起来像:

import pandas as pd 
student_grades = pd.read_csv('.../Term2grades.csv') 

x = student_grades.loc[student_grades['Student_Name'] == "Stella", ['Grade']] 
print(x) 

这段代码的输出是:

 Grade 
2  90 

不过,我只希望得到90这样我可以在以后使用它(如果x> 85等。 ) 感谢您的帮助。

回答

1

访问底层numpy的阵列,并采取它的第一个元素(假设你有一个单一的元素):

student_grades.loc[student_grades['Student_Name'] == "Stella", 'Grade'].iloc[0] 
Out: 90 
+0

这一工程:

student_grades.loc[student_grades['Student_Name'] == "Stella", 'Grade'].values[0] Out: 90 

您也可以在返回系列使用iatiloc !如果我有500多名学生的文件,它还能工作吗?值[0]中的0是做什么的? – memothetaker

+0

@memothetaker'student_grades ['Student_Name'] ==“Stella”'部分是布尔索引。我们不知道它会返回多少行,所以它返回一个Series。该系列可以是空的,它可能有单个元素或者它可能有几个元素。当它有单个元素时,您需要通过其位置(0)来访问该元素。你可以有500多名学生,只要学生姓名是独一无二的,就可以保证工作。如果没有学生有这个名字,它会返回一个关键错误。如果它们中的几个具有相同的名称,它将只返回第一个。 – ayhan

+0

谢谢,这帮了很大的忙! – memothetaker