У меня есть следующий Входной кадр данных pandas :
Index respID company month score
0 101 AAA Oct'18 8
1 102 AAA Oct'18 10
2 103 AAA Oct'18 5
3 104 AAA Oct'18 4
4 105 BBB Oct'18 5
5 106 BBB Oct'18 6
6 107 BBB Oct'18 8
7 108 BBB Oct'18 1
8 109 AAA Nov'18 5
9 110 AAA Nov'18 10
10 111 AAA Nov'18 4
11 112 AAA Nov'18 7
12 113 AAA Nov'18 8
13 114 BBB Nov'18 9
14 115 BBB Nov'18 2
15 116 BBB Nov'18 5
16 117 BBB Nov'18 1
Мне нужно объединить большой кадр данных pandas с меткой Top 3 - процент совпадений со счетом 8,9,10по 10-балльной шкале.
Итак, агрегированный выходной кадр данных pandas должен выглядеть следующим образом:
Index TOP3
(AAA, Oct'18) 0.50
(BBB, Oct'18) 0.25
(AAA, Nov'18) 0.40
(BBB, Nov'18) 0.25
Мне сказали, что это очень распространенный показатель в маркетинге., но я не нашел какой-либо близкой агрегации.Я испробовал несколько подходов, например, используя:
AGGR=df.groupby(['month','company'])['score'].apply(lambda x: pd.value_counts(x)/x.count())
, но затем мне нужно было бы выполнить другую агрегацию по сводным оценкам и т. Д.
Есть ли какой-нибудь хороший способ получить агрегацию трех лучших в одном кадре?
Большое спасибо!