Python Panda группирует один столбец по уникальным значениям, создавая новый столбец на основе общего количества уникальных значений перед группировкой

#python #pandas

Вопрос:

У меня есть электронная таблица Excel, с которой я работаю. В нем 7 столбцов, а когда он будет закончен, в нем должно быть 8.

Столбцы следующие: Идентификатор приложения, Имя приложения, Срок выполнения, Дата истечения срока действия, Команда, Имя сервера, Срочность

Новый столбец под названием Количество приложений должен быть создан на основе количества уникальных идентификаторов приложений. Я выделю ключевые столбцы в приведенном ниже примере диаграммы:

Вот пример того, как выглядят данные (не точно):

Перед запуском сценария:

 App ID Team App Count The Rest Of The Columns from here 01111 Frontend 2 12411 Marketing 10  01111 Backend 3  

После запуска сценария:

 App ID Team App Count The Rest Of The Columns from here 01111 Frontend, Backend 5 12411 Marketing 10   

Пожалуйста, обратите внимание, как команды «интерфейс» и «серверная часть» были объединены в одну строку. Кроме того, пожалуйста, обратите внимание, как количество приложений было увеличено за счет объединения значений двух одинаковых идентификаторов приложений. И, наконец, я хотел бы, чтобы все столбцы (данные об истечении срока действия, имя сервера и т. Д.) Были включены после, Но они не требуют корректировки.

Я использовал GroupBy, agg и другие функции, но обнаружил, что они сталкиваются с различными проблемами, такими как отсутствие столбцов или количество приложений, которые складываются, но не сливаются в одну строку и все еще занимают 2 строки.

Любая помощь будет признательна.

Этот код здесь объединяет команды и группы по идентификатору приложения, но он вызывает проблемы при попытке создать новый столбец для количества приложений:

data = result.groupby('App ID')['Team'].apply(', '.join).reset_index()

Ответ №1:

Попробуйте группироваться по всем столбцам. И добавьте применить, когда вы посчитаете идентификатор приложения

Что-то вроде этого df.groupby[Идентификатор приложения, Имя приложения, Дата выполнения, Дата истечения срока действия, Команда, Имя сервера, Срочность])[‘Идентификатор приложения’] .nunique() или df = df.groupby(by=[Идентификатор приложения, Имя приложения, Дата выполнения, Дата истечения срока действия, Команда, Имя сервера, Срочность], as_index=False).agg({‘Идентификатор приложения’: pd.Series.nunique})