#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})