#python #pandas
#python #панды
Вопрос:
Я пытаюсь оценить средний ранг элементов по нескольким категориям в pandas dataframe, но не знаю, как это сделать
Допустим, у нас есть следующий фрейм данных, который оценивает элементы в разных категориях. Элементы уже отсортированы по убыванию оценки элемента в каждом столбце.
Index Safety Performance Capability
0 item_1 item_3 item_1
1 item_3 item_2 item_2
2 item_4 item_1 item_3
3 item_2 item_4 item_4
Что мне нужно, так это общий рейтинг элементов на основе их индексов во всех категориях, поэтому в целом в этом случае будет выглядеть примерно так:
Total
item_1
item_3
item_2
item_4
Комментарии:
1. Вам нужно определить вес здесь
2. вес — это индекс
Ответ №1:
Если вес index
используется melt
groupby
с mean
индексом
s=df.reset_index().melt('Index').groupby('value')['Index'].mean().sort_values()
s
Out[14]:
value
item_1 0.666667
item_3 1.000000
item_2 1.666667
item_4 2.666667
Name: Index, dtype: float64
df['Total']=s.index
Ответ №2:
Другой вариант с stack
groupby
sum
(также можно использовать mean
как wen)
df.set_index('Index').stack().reset_index().groupby(0).Index.sum().sort_values()
Выводит
item_1 2
item_3 3
item_2 5
item_4 8
Name: Index, dtype: int64