Преобразуйте ваши серии в категориальные, извлеките категории, количество которых не входит в верхние 3, добавьте новую категорию, например, 'Other'
, а затем замените ранее вычисленные категории:
df['Jobrol'] = df['Jobrol'].astype('category')
others = df['Jobrol'].value_counts().index[3:]
label = 'Other'
df['Jobrol'] = df['Jobrol'].cat.add_categories([label])
df['Jobrol'] = df['Jobrol'].replace(others, label)
Примечание: Это заманчиво объединить категории, переименовав их с помощью df['Jobrol'].cat.rename_categories(dict.fromkeys(others, label))
, но это не сработает, так как это подразумевает несколько идентично маркированных категорий, что невозможно.
Приведенное выше решение может быть адаптировано для фильтрации по count .Например, чтобы включить только категории со счетом 1, вы можете определить others
следующим образом:
counts = df['Jobrol'].value_counts()
others = counts[counts == 1].index