Одним из решений является сортировка, а затем удаление дубликатов после операции groupby
:
df = pd.DataFrame({'Brand': ['B1'] * 5 + ['B2'] * 5,
'Model': ['M1', 'M2', 'M1', 'M2', 'M3',
'N1', 'N1', 'N2', 'N3', 'N1']})
df['Count'] = df.groupby(['Brand', 'Model'])['Model'].transform('count')
res = df.sort_values('Count', ascending=False)\
.drop_duplicates('Brand')
print(res)
# Brand Model Count
# 5 B2 N1 3
# 0 B1 M1 2
Обратите внимание, что при этом удаляются дубликаты групповых верхних отсчетов.
Отличный способ создать объектную базу данных с сервера SQL. Я делаю это для всех объектов конфигурации и всего остального, которое не требует каких-либо особых запросов. Расширение вашего объекта - легко, просто создайте новое свойство в вашем классе и инициализируйте со значением по умолчанию. Вам больше не нужна недвижимость? Просто удалите его в классе. Легко выкатить, легко обновить. Подходит не для всех объектов, но если вы извлекаете какую-либо подпорку, на которую нужно индексировать - продолжайте использовать ее. Очень современный способ использования сервера sql.
Мы использовали модифицированную версию XML именно для той цели, которую вы описываете в течение семи или восьми лет, и она прекрасно работает. Формы потребностей наших клиентов настолько разнообразны, что мы никогда не поспеваем за подходом «таблица / столбец». Мы слишком далеко продвинулись по пути XML, чтобы измениться очень легко, но я думаю, что JSON также сработает и, возможно, станет лучше.
Отчетность не является проблемой с парой хороших функций синтаксического анализа, и я бы никому не понравился, чтобы найти существенную разницу в производительности между нашими отчетами / аналитикой и таблицей / столбцом решения этой потребности.
Я бы не рекомендовал это.
Если вы когда-нибудь захотите сделать какие-либо отчеты или запросы на основе этих значений в будущем, это сделает вашу жизнь намного сложнее, чем наличие нескольких дополнительных таблиц / столбцов.
Почему вы избегаете создавать новые столы? Я говорю, если ваше приложение требует, чтобы они продолжали и добавляли их ... Также, если кто-то должен будет просмотреть ваш код / db позже, им, вероятно, будет сложнее выяснить, что вы делаете (в зависимости от того, какого рода документация у вас есть).
Это будет медленнее, чем форма, определенная в коде, но один лишний запрос не должен причинить вам большого вреда. (Только не позволяйте 1 дополнительному запросу превратиться в 10 дополнительных запросов!)
Изменить: если вы выбираете строку с помощью formTitle
вместо pKey
(я бы сделал это, потому что тогда ваш код будет более читабельным), поместите индекс на formTitle