Python 使用DICT查找数据帧变量的值

Python 使用DICT查找数据帧变量的值,python,dictionary,pandas,dataframe,Python,Dictionary,Pandas,Dataframe,我有一个熊猫数据框,有教师ID和学生ID列。我也有每个、TDict和SDict的DICT,比如说,给出每个教师授课的年级和每个学生注册的年级,ID号作为键 我想在数据框中创建一个新列,引用dicts中的信息。但是,当我试图用TDict[Teacher_ID]+SDict[Student_ID]之类的公式创建一个列时,我会收到一条错误消息,告诉我“'Series'对象是可变的,因此它们不能散列。” 什么是公认的解决方法?我是否必须将ID复制到新列中,用dict值替换这些列中的值,然后从那里开始工作

我有一个熊猫数据框,有教师ID和学生ID列。我也有每个、TDict和SDict的DICT,比如说,给出每个教师授课的年级和每个学生注册的年级,ID号作为键

我想在数据框中创建一个新列,引用dicts中的信息。但是,当我试图用TDict[Teacher_ID]+SDict[Student_ID]之类的公式创建一个列时,我会收到一条错误消息,告诉我“'Series'对象是可变的,因此它们不能散列。”


什么是公认的解决方法?我是否必须将ID复制到新列中,用dict值替换这些列中的值,然后从那里开始工作?我猜有更好的方法……

如果我理解正确,那么您只需调用
map

df['Teaching_grade'] = df['Teacher_ID'].map(TDict)
df['Student_grade'] = df['Student_ID'].map(SDict)

这将执行查找并将值分配给新列

能否显示代码和数据结构的示例?非常感谢,是的,这确实会创建具有正确值的列,类似于将dict“合并”回数据集中。我希望避免这一步,直接在公式中使用dict值,但这可能是不可能的。下面是到目前为止的代码,读取数据并创建dict:
code
df=read\u csv(“TeachingData.csv”)ts=list(df.teacher\u id.drop\u duplicates())tdict={t:random(),用于ts}sdict=dict(df.correct.groupby(df.student\u id).mean())
code
我不确定您是否可以,这可能是最有效的方法,因为合并将复制源数据帧,我认为在一个系列上映射是高度优化的,因为它是使用cython编写的。如果你对这个答案感到满意,那么你可以投票并接受它。@DavidEpstein你可以使用一个函数并将其应用于数据帧,但我不确定你会节省多少时间,这取决于有多少唯一ID,一旦你创建了DICT,那么使用
map
真的很快谢谢,Ed。map解决方案没有word,而且速度很快,所以我很高兴。