У меня есть датафрейм, похожий на этот:
Errorid Matricule Priority
0 1 01 P1
1 2 01 P2
2 3 01 NC
3 4 02 P1
4 5 02 P4
5 6 02 EDC
6 7 02 P2
В этом списке перечислены все ошибки для Matricule и их приоритет.
Что я хочу сделать, это подсчитать все ошибки для Matricule , исключая "N C" и "ED C" и поместите результат в тот же самый кадр данных.
Пример результата:
Errorid Matricule Priority NberrorsMatricule
0 1 01 P1 2
1 2 01 P2 2
2 3 01 NC 2
3 4 02 P1 3
4 5 02 P4 3
5 6 02 EDC 3
6 7 02 P2 3
Я пробовал несколько вещей, как показано ниже:
DF['NberrorsMatricule'] = DF.groupby('Matricule')['Pirority'].transform(lambda x : x.count() if x in ['P1','P2','P3','P4'])
DF['NberrorsMatricule'] = DF.groupby('Matricule')[DF['Pirority'] in ['P1','P2','P3','P4']].transform("count")
Каждый раз, когда я получаю неоднозначную ошибку значения. ValueError: Истинное значение ряда неоднозначно. Используйте a.empty (), a.bool (), a.item (), a.any (), a.all ().
Обратите внимание, что эта работа:
DF['NberrorsMatricule'] = DF.groupby('Matricule')['Pirority'].transform("count")
Но это, очевидно, не фильтрует приоритетность.
Эти кадры данных являются примером, в действительности я работаю с огромным количеством данных (более 400 000 экземпляров в этом), так что если кто-то может помочь мне понять поведение transform () и способы эффективной фильтрации данных. Было бы очень приятно.
Заранее благодарен за помощь