Похоже, что только удаление фигурной скобки поможет решить вашу проблему. Нам нужно будет увидеть больше кода, чтобы быть уверенным, что это ваша проблема.
Если у вас есть все ваши данные в одном кадре данных, df
, вы можете сделать следующее:
grp_by_cols = ['Supplier', 'ID', 'Grp']
all_cols = grp_by_cols + ['Unit']
res_df = df.assign(first_unit=lambda df: df.loc[:, all_cols]
.groupby(grp_by_cols)
.transform('first'))\
.assign(incorrect=lambda df: df['Unit'] == df['first_unit'])\
.assign(incorrect=lambda df: df.loc[:, grp_by_cols + ['incorrect']])\
.groupby(grp_by_cols)
.transform(np.any))
При первом вызове assign
добавляется один новый столбец (называемый 'first_unit'
. ]) это первое значение «Единицы» для каждой группы Поставщика / ID / Grp (см. grp_by_cols
).
Второй вызов assign
добавляет столбец с именем 'incorrect'
, то есть True
, когда 'Unit'
не равен 'first_unit'
. Третий и последний вызов assign
заменяет этот столбец на True
, если любых строк в этой группе равны True
. Вы можете удалить это, если это не то, что вы хотите.
Затем, если вы хотите посмотреть на результаты для одного поставщика, вы можете сделать что-то вроде:
res_df.query('Supplier = "Authentic Brands Group"')