#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. Ваш ответ верен, но операция должна была сначала показать, что они пытались. Мне нравится эта идея!