Выбор первой строки каждого индекса в многоиндексируемом фрейме данных pandas

#python #pandas #data-analysis

#python #pandas #анализ данных

Вопрос:

выберите каждую первую строку каждого индекса многоиндексируемого фрейма данных pandas.

 grouped = ecommerce[["category_id", "brand", "price"]].groupby(by=["category_id", "brand"]).mean()
grouped_sort = grouped.sort_values(by=["category_id", "price"], ascending=False)
 

grouped_sort выглядит так:
grouped_sort

теперь в этом фрейме данных я хочу выбрать в каждой категории только первые бренды с самой высокой ценой.

Кто-нибудь может мне помочь?

Комментарии:

1. пожалуйста, отправьте образец ввода и ожидаемый результат df в виде текста, чтобы мы могли копировать вставлять

Ответ №1:

Следующий код может помочь:

 gsgb = grouped_sort.copy()
gsgb = gsgb.groupby(level=0)
print(type(gsgb))
gsgb.head()

for cat, df in gsgb:
    display(df.sort_values(by=["price"], ascending=False).reset_index().iloc[0])
 

Работает:
Он в основном перебирает все категории в сгруппированном фрейме данных, а затем сортирует значения на основе price , затем сбрасывает индекс и, наконец, выбирает тот, у которого максимальная цена.

Комментарии:

1. Это не работает и вызывает ошибку. ошибка: ошибка значения: слишком много значений для распаковки (ожидается 2). возможно, это произошло потому, что я использую groupby в фрейме данных pandas.

2. Можете ли вы добавить фрагмент ecommerce ? Чтобы я мог использовать его для точной настройки моего ответа?

3. kaggle.com/mkechinov /… это ссылка на набор данных электронной коммерции

4. Я изменил код, указанный в наборе данных.

5. Большое спасибо 🙏🏻