#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)
теперь в этом фрейме данных я хочу выбрать в каждой категории только первые бренды с самой высокой ценой.
Кто-нибудь может мне помочь?
Комментарии:
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. Большое спасибо 🙏🏻