python, панды, найдите средние цены четырех ведущих брендов, фрейм данных

#python #pandas #dataframe #pivot

Вопрос:

Привет, мне нужно получить средние цены на четыре лучших бренда, найти четыре лучших бренда по общему количеству категорий, всего три категории. четверка лидеров-это не тот, у кого больше денег, а тот, у кого больше продуктов.

это фрейм данных:

 brand     price   category
Apple     499.0    phone
Huawei    200.0    phone
Apple     150.0    headphones
Samsung   800.0    phone
Apple     55.0     accesory
xiomi     25.0     accesory
Huawei    140.0    headphones
 

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

          phone    headphones   accesory
brand_1  XXXX         XXXX        XXXX
brand_2  XXXX         XXXX        XXXX
brand_3  XXXX         XXXX        XXXX
brand_4  XXXX         XXXX        XXXX
 

Я новичок, поэтому у меня не слишком много опыта, надеюсь, вы сможете мне помочь, спасибо

Ответ №1:

Попробуй:

 # get top 4 brands by size:
top_4 = df.groupby("brand").size().nlargest(4)

# pivot the table, format it and get top_4 brands:
df_out = (
    df.pivot_table(
        index="brand",
        columns="category",
        values="price",
        aggfunc="mean",
        fill_value=0,
    )
    .apply(lambda x: ["{:.2f}".format(v) for v in x])
    .loc[top_4.index]
)
print(df_out)
 

С принтами:

 category accesory headphones   phone
brand                               
Apple       55.00     150.00  499.00
Huawei       0.00     140.00  200.00
Samsung      0.00       0.00  800.00
xiomi       25.00       0.00    0.00
 

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

1. @EdekiOkoh Спасибо! Если я правильно понимаю вопрос — это не прямой поворот — threere ищет 4 лучших бренда форматирование.

2. Ваш ответ верен, но операция должна была сначала показать, что они пытались. Мне нравится эта идея!