Python 从每个列表中提取第n个元素并将其存储在新列中

Python 从每个列表中提取第n个元素并将其存储在新列中,python,pandas,list,jupyter-notebook,Python,Pandas,List,Jupyter Notebook,我有一个数据帧(称为'df'),其中包含一个名为'grades'的列。此列包含等级列表。此列中的数据属于“对象”类型 student_id grades 0 11 [A,A,B,A] 1 12 [B,B,B,C] 2 13 [C,C,D,B] 3 21 [B,A,C,B] 我希望创建一个名为“Mathematics_grades”的新列,它将存储成绩列表中的第三个元素 示例输出:

我有一个数据帧(称为'df'),其中包含一个名为'grades'的列。此列包含等级列表。此列中的数据属于“对象”类型

    student_id    grades
0       11      [A,A,B,A]
1       12      [B,B,B,C]
2       13      [C,C,D,B]
3       21      [B,A,C,B] 
我希望创建一个名为“Mathematics_grades”的新列,它将存储成绩列表中的第三个元素

示例输出:

      student_id   grades    maths_grade
0       11      [A,A,B,A]        B
1       12      [B,B,B,C]        B
2       13      [C,C,D,B]        D
3       21      [B,A,C,B]        C  

最好的办法是这样做

将索引与
str
一起使用,因为使用iterables:

df['maths_grade'] = df['grades'].str[2]
如果没有遗漏值和性能很重要,请列出理解:

df['maths_grade'] = [x[2] for x in df['grades']]

df['math_grade']=df['grades'].apply(lambda x:x[2])
将完成这项工作

@DanielMesejo-是的,您是对的,但它也可以处理iterables,因此如果列中的列表返回第三个元素。