зацикливание на сгруппированных данных с несколькими условиями - PullRequest
1 голос
/ 07 июня 2019

Я получил CSV-файл, который выглядит как в таблице ниже.Для каждой папки я хочу вернуть изображение с наибольшей вероятностью быть «собакой».Каждая папка может вернуть только одно изображение.Если Dog отсутствует, сделайте «Cat» с наибольшей вероятностью основным изображением.Если нет кота, сделайте птицу с наибольшей вероятностью основным изображением и так далее.

CSV:

FolderName     ImageName    Predictions    Probabilities
   ABC           MyPet           Dog            0.98
   ABC           HisPet          Cat            0.90
   DEF           HerPet          Bird           0.83
   ABC           NotPet          Dog            0.23
   DEF           asdf            Dog            0.78
   DEF           M123            Cat            0.19
   GHI           M123s           Cat            0.89
   GHI           M13             Cat            0.19

Мне удалось вернуть только img с наибольшей вероятностью. Как я могу сначала расставить приоритеты в столбце «Прогноз», а затем в столбце «Вероятности»?

df.loc[df.groupby('FolderName')['Probabilities'].idxmax()]

Код возвращает

FolderName     ImageName    Predictions    Probabilities
   ABC           MyPet           Dog            0.98
   DEF           asdf            Bird           0.83
   GHI           M123s           Cat            0.89

Желаемый результат:

FolderName     ImageName    Predictions    Probabilities
   ABC           MyPet           Dog            0.98
   DEF           asdf            Dog            0.78
   GHI           M123s           Cat            0.89

1 Ответ

1 голос
/ 07 июня 2019

Это можно сделать, преобразовав «Предсказания» в упорядоченный столбец Категориальные, затем вызвав sort_values и drop_duplicates.

df['Predictions'] = pd.Categorical(
    df['Predictions'], categories=['Dog', 'Cat', 'Bird'], ordered=True)

(df.sort_values(['Predictions', 'Probabilities'], ascending=[True, False])
   .drop_duplicates('FolderName'))

  FolderName ImageName Predictions  Probabilities
0        ABC     MyPet         Dog           0.98
4        DEF      asdf         Dog           0.78
6        GHI     M123s         Cat           0.89
...