У меня есть этот набор данных с именем df.Я пытаюсь построить фрейм данных, который показывает долю каждой группы для каждого возможного результата.Это означает, что у меня есть список, в котором указываются столбцы, сгруппированные по фрейму данных, и столбец, в котором указывается интересующий результат.
Столбцы, содержащиеся в этом наборе данных:
['stop_id', 'stop_date', 'officer_id', 'driver_gender', 'driver_age', 'driver_race', 'ethnicity', 'violation', 'is_arrested', 'stop_outcome','stop_year', 'stop_month', 'stop_season', 'age_category', 'arrest_or_citation'].
Иdf выглядит так (я скопировал первые 15 строк): df [: 15]
stop_id stop_date ... age_category arrest_or_citation
0 2168033 2004-05-29 ... middle_aged False
1 4922383 2009-09-04 ... young_adult True
2 5109631 2009-12-23 ... middle_aged True
3 924766 2001-08-13 ... adult True
4 2293870 2004-09-25 ... middle_aged True
5 2294412 2004-09-26 ... young_adult True
6 6224320 2011-05-11 ... young_adult True
7 2773342 2006-01-30 ... middle_aged False
8 8559541 2014-05-25 ... juvenile True
9 9089078 2015-04-01 ... middle_aged True
10 58220 2000-02-09 ... adult True
11 7449910 2012-10-30 ... middle_aged True
12 9229308 2015-06-15 ... young_adult True
13 4257690 2008-08-24 ... young_adult True
14 3964626 2008-03-27 ... adult True
15 8017683 2013-08-13 ... middle_aged True
[15 rows x 15 columns]
Например, я пытаюсь сгруппировать по ['age_category', 'driver_gender'] и получить долю каждой группыв 'is_arrested'].Кадр данных, к которому я должен прийти, должен выглядеть следующим образом:
is_arrested False True
age_category driver_gender
juvenile F 0.994462 0.005538
M 0.984669 0.015331
young_adult F 0.990855 0.009145
M 0.979265 0.020735
adult F 0.991970 0.008030
M 0.983174 0.016826
middle_aged F 0.995749 0.004251
M 0.989827 0.010173
senior F 0.998697 0.001303
M 0.995823 0.004177
Однако я не могу этого сделать.Я попытался:
size_per_group = df.groupby(['age_category', 'driver_gender'])['is_arrested'].size()
size_per_group_outcome = df.groupby(['age_category', 'driver_gender', 'is_arrested'])['is_arrested'].size()
df_share = size_per_group_putcome/size_per_group
Но это приводит к:
NotImplementedError: merging with more than one level overlap on a multi-index is not implemented
Я не могу это исправить, и был бы признателен за любую помощь в этом!Большое вам спасибо!