我基本上有一列要检查的值是有效的。我想创建一个新列,该列会返回true或false的有效性。当在另外两列的查询中找到这些值时,这些值才有效,这些列包括字典的键和值。
在这里,我的价值观是考试。 EXAM
仅在落在得分站点或DBN
可以得分的情况下才有效,例如,如果11X000可以对数学进行评分,而这是一次落在11X000的数学考试, Valid Site
。
请参阅屏幕截图,第一个图像是我要在Python中复制的图像,第二个图像是字典。
在我的代码中,我制作了{site:exam}
的字典,并试图检查所有给定记录的有效性。
Sites_To_Exams_Dict = Sites_To_Exams_df.groupby('DBN')['ALL EXAMS'].apply(list).to_dict()
MaterialsReport_df['Valid Site'] = np.where(MaterialsTracking_df['EXAM'] in Sites_To_Exams_Dict.get(MaterialsReport_df['Scoring Site Including X']),
"Y", "N")
不幸的是,这给出了错误
TypeError: 'Series' objects are mutable, thus they cannot be hashed
对于上述代码的任何其他方法或错误修复,我将不胜感激。谢谢!
答案 0 :(得分:0)
我认为您的问题是,当您调用to_dict
.时,系列对象(每个单元格的检查列表)用作字典中的键,因此系列对象(如列表)是可变的,因此cannot be used as keys in a dictionary。我会尽量避免使用字典方法,而应使用.isin
之类的东西来检查该值是否在有效站点列表中。