熊猫查找键值对中是否包含值的方法

时间:2019-07-19 20:22:44

标签: python pandas

我基本上有一列要检查的值是有效的。我想创建一个新列,该列会返回true或false的有效性。当在另外两列的查询中找到这些值时,这些值才有效,这些列包括字典的键和值。

在这里,我的价值观是考试。 EXAM仅在落在得分站点或DBN可以得分的情况下才有效,例如,如果11X000可以对数学进行评分,而这是一次落在11X000的数学考试, Valid Site

请参阅屏幕截图,第一个图像是我要在Python中复制的图像,第二个图像是字典。

enter image description here

enter image description here

在我的代码中,我制作了{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

对于上述代码的任何其他方法或错误修复,我将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

我认为您的问题是,当您调用to_dict.时,系列对象(每个单元格的检查列表)用作字典中的键,因此系列对象(如列表)是可变的,因此cannot be used as keys in a dictionary。我会尽量避免使用字典方法,而应使用.isin之类的东西来检查该值是否在有效站点列表中。