Нахождение верхних категорий значения столбца на основе другого столбца - PullRequest
0 голосов
/ 31 декабря 2018

Нахождение верхних категорий значения столбца на основе другого столбца DF:

nationality age card    category    amount
India   Young   AAA     Garment     200
India   Young   AAA     Dining      100
India   Young   BBB     Garment     400
Aus     Adult   BBB     Grocery     200
US      Adult   CCC     Beverage    100
India   Student CCC     Beverage    50
India   Adult   AAA     Grocery     1000

Я хочу использовать столбец Amount и отсортировать значение, которое выше, это также должно сложитьсумма, если категория, карта, национальность и возраст совпадают и возвращают верхнюю категорию.

Ниже приведен пример фрейма данных для вывода, который я хочу.

Вывод:

nationality age    card Top1 category   Top2 category   Top3category
India      young    AAA Garment             Dining        NAN
India      Adult    AAA Grocery              NAN          NAN
India      student  CCC Beverage             NAN          NAN
Aus        Adult    BBB Grocery              NAN          NAN
US         Adult    CCC Beverage             NAN          NAN

Для Индии, молодой, AAA, Одежда, моя сумма выше, и этостал высшей категорией.Аналогично для остальных.

1 Ответ

0 голосов
/ 31 декабря 2018
df['sort_order'] = (df.sort_values(['nationality', 'age', 'card', 'amount'], ascending=False)
                      .groupby(['nationality', 'age', 'card'])
                      .cumcount())
df.set_index(['nationality', 'age', 'card', 'sort_order'])['category'].unstack().reset_index()

Сортируя и затем используя cumcount, вы получаете групповой порядок категорий (по количеству).Затем df.unstack поворачивает стол так, как вы хотите.Конечно, при желании вы можете переименовать столбцы позже.

Вывод:

#sort_order nationality      age card         0       1
#0                  Aus    Adult  BBB   Grocery     NaN
#1                India    Adult  AAA   Grocery     NaN
#2                India  Student  CCC  Beverage     NaN
#3                India    Young  AAA   Garment  Dining
#4                India    Young  BBB   Garment     NaN
#5                   US    Adult  CCC  Beverage     NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...