Python 基于列表中的值提取列值

Python 基于列表中的值提取列值,python,pandas,dataframe,data-extraction,Python,Pandas,Dataframe,Data Extraction,我需要根据在列表中提取的另一列的值,从数据帧中的一列中提取值 import pandas as pd data = [[1, 'john', 'kelly'], [2, 'john', 'raj'], [2, 'john', 'leonard'], [3, 'penny', 'stuart'], [3, 'penny', 'halley'], [3, 'penny', 'amy'], [4, 'sheldon', 'will'], [4, 'sheldon', 'richard']] schoo

我需要根据在列表中提取的另一列的值,从数据帧中的一列中提取值

import pandas as pd
data = [[1, 'john', 'kelly'], [2, 'john', 'raj'], [2, 'john', 'leonard'], [3, 'penny', 'stuart'], [3, 'penny', 'halley'], [3, 'penny', 'amy'], [4, 'sheldon', 'will'], [4, 'sheldon', 'richard']]
school = pd.DataFrame(data, columns=['teacher_id', 'teacher_name', 'student_name'])
print(school)
这是我的数据帧

   teacher_id teacher_name student_name
0           1         john        kelly
1           2         john          raj
2           2         john      leonard
3           3        penny       stuart
4           3        penny       halley
5           3        penny          amy
6           4      sheldon         will
7           4      sheldon      richard
从这个数据框中,我提取了出现次数最多的教师id

school.teacher_id.value_counts().head()
> 3    3
  2    2
  4    2
  1    1
现在使用上述值(教师id)如何获取教师姓名?

而不是使用:-

school.teacher_id.value_counts().head()
使用以下命令:-

school[['teacher_id','teacher_name']].value_counts().head()

您可以使用以下方法:-


很好的一个+那很简单。非常感谢。尝试
s=pd.DataFrame(school.teacher\u id.value\u counts().head())s.merge(school.iloc[:,:2],how='left',on='teacher\u id')。删除重复项(keep='first')。#获取数据框
s.merge(school.iloc[:,:2],how='left',on='teacher\u id')。删除重复项(keep='first')['teacher\u name',to'u list()。#放入列表
school.groupby('teacher_id')['teacher_name'].value_counts().head()