#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
Допустим, у меня есть фрейм данных следующим образом:
import pandas as pd
df = pd.DataFrame({
'brand': ['Yum_Yum', 'Yum_Yum', 'Indomie', 'Indomie', 'Indomie', 'Boom_Boom', 'Boom_Boom'],
'style': ['cup', 'box', 'cup', 'pack', 'pack', 'pack', 'pack'],
'rating': [4, 4, 3.5, 15, 5, 2.3, 0]
})
Я определяю иерархию так #hierarchy --> 1 = pack, 2 = cup, 3= box
, где pack имеет наивысший приоритет, а box — самый низкий. Я хочу сохранить только один экземпляр каждого уникального значения в столбце бренда. Этот экземпляр должен иметь наивысшее значение приоритета на основе моей иерархии. Если есть связи, то их можно разделить случайным образом.
Таким образом, результирующий фрейм данных будет выглядеть примерно так:
brand style rating
Yum_Yum cup 4.0
Indomie pack 5.0
Boom_Boom box 2.3
Ответ №1:
Попробуйте сопоставить стиль с приоритетом, отсортировать и удалить дубликаты:
priority = {'cup':2, 'box':3, 'pack':1}
df['style_rank'] = df['style'].map(priority)
df.sort_values('style_rank').drop_duplicates('brand')
Вывод:
brand style rating style_rank
3 Indomie pack 15.0 1
5 Boom_Boom pack 2.3 1
0 Yum_Yum cup 4.0 2
Комментарии:
1. о, это прекрасно, я ожидал, что это будет что-то в этом роде.
2. Я приму ответ, как только смогу. 9 минут