сложные требования для обработки данных с использованием Python - PullRequest
0 голосов
/ 03 апреля 2019

Это мое исходное текстовое поле.

Area    Brand   Points
USA     Nike    86
USA     Addidas 85
USA     Speedo  84
USA     Nike    83
USA     Speedo  82
USA     Nike    81
Japan   Nike    84
Japan   Nike    85
Japan   Nike    86
Japan   Addidas 82
Japan   Addidas 80
Japan   Addidas 86
Japan   Speedo  84
Japan   Speedo  82

Для столбца «Площадь» отображается только уникальное значение. Для столбца «Марка» отображается высокочастотное значение. Для столбца «Точки» отображается толькосреднее () результаты

Таким образом, оно должно быть таким же, как показано ниже.

Area    | ModBrand        | AvePoints
USA     | NIKE            | MEAN NUMBER
Japan   | [NIKE, Addidas] | MEAN NUMBER

Я знаю, что могу использовать функцию группировки для области и среднее значение для точек

data = data.groupby(['Area']).mean().reset_index()

Но для колонки Брэнд.Можете ли вы дать мне несколько советов?

Спасибо

1 Ответ

0 голосов
/ 03 апреля 2019

Вы можете использовать pd.Series.mode примерно так:

df.groupby('Area').agg({'Brand': lambda x: x.mode().values.tolist(), 'Points': 'mean'})

Дает:

                 Brand  Points
Area                          
Japan  [Addidas, Nike]  83.625
USA             [Nike]  83.500
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...