Как получить максимальный счет, сгруппированный по элементу во фрейме данных панд - PullRequest
0 голосов
/ 28 января 2019

У меня есть данные, сгруппированные по столбцам буксировки [CustomerID, кластер], например:

CustomerIDClustered.groupby(['CustomerID','cluster']).count()


                    Count
CustomerID cluster       
1893       0            1
           1            2
           2            5
           3            1
2304       2            3
           3            1
2655       0            1
           2            1
2850       1            1
           2            1
           3            1
3648       0            1

Мне нужно назначить наиболее частый кластер для идентификатора клиента

Например:

  1. 1893-> 2 (2 появляются в кластере больше, чем другие кластеры)
  2. 2304-> 2
  3. 2655-> 1

1 Ответ

0 голосов
/ 28 января 2019

Использование sort_values, reset_index и последний drop_duplicates:

df = df.sort_values('Count', ascending=False).reset_index().drop_duplicates('CustomerID')

Аналогичное решение, только фильтрация попервый уровень MultiIndex:

df = df.sort_values('Count', ascending=False)
df = df[~df.index.get_level_values(0).duplicated()].reset_index()
print (df)
   CustomerID  cluster  Count
0        1893        2      5
1        2304        2      3
2        2655        0      1
3        2850        1      1
4        3648        0      1
...