Сортировать совокупные значения в Panda - PullRequest
0 голосов
/ 15 января 2020

Мне нужно написать код, который даст мне таблицу с самым популярным и наиболее прибыльным товаром. Код ниже, кажется, работает нормально, мне просто нужно продублировать его, чтобы первый сортировался по количеству цен, а второй - по сумме цены.

most_popular_item = Heroes_file.groupby(["Item ID", "Item Name","Price"]).agg({"Price": ['count','sum']})
                                                                                       
most_popular_item.head()


THIS WILL PRINT:


Item ID	Item Name	Price		
0	Splinter	1.28	4	5.12
1	Crucifer	3.26	3	9.78
2	Verdict	2.48	6	14.88
3	Phantomlight	2.49	6	14.94
4	Bloodlord's Fetish	1.70	5	8.50

Я использую этот код, но получаю ошибку (# Проверка на наличие дубликатов)

KeyError: 'Price count'

most_popular_item = most_popular_item.sort_values(["Price count"], ascending=False)

Ответы [ 2 ]

1 голос
/ 15 января 2020

.agg({"Price": ['count','sum']}) создает мультииндекс с колонками. Для сортировки по мультииндексу вам также нужно использовать кортеж так:

most_popular_item = most_popular_item.sort_values(by = ('Price','count'),  ascending=False)
0 голосов
/ 15 января 2020

Я не знаю, правильно ли я читаю то, что вы хотите, но вы можете получить таблицу с наибольшим количеством и суммой, используя .nlargest ()

target_indices = most_popular_item['count'].nlargest(1).index.values.tolist() # [2]
target_indices.extend(most_popular_item['sum'].nlargest(1).index.values.tolist()) # [2, 2]

most_popular_item[most_popular_item.index.isin(target_indices)]

Вывод:

   Item_ID Item_Name  Price  count    sum
2        2   Verdict   2.48      6  14.98

Этот предмет является самым популярным и имеет наибольшую сумму в вашей группе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...