2015-01-23 2 views
1

데이터의 각 행이 차지하는 전체 비율을 나타낼 필요가 있습니다. 요령은 groupby 호출에서 상위 그룹에 바인딩되는 백분율이 필요합니다. 내 DF는 현재 다음과 같이 :그룹핑 팬더 데이터 프레임의 합계를 계산하십시오.

category Segment  Pageviews 
Sitting  Age 25-34 2268 
      Age 35-44 2942 
      Age 45-53 2209 
      Age 55+  3317 
Standing Age 25-34 2193 
      Age 35-44 1664 
      Age 45-53 1874 
      Age 55+  1647 
Kneeling Age 25-34 680 
      Age 35-44 494 
      Age 45-53 876 
      Age 55+  1489 

는 내가 달성을 기대하고하는 것은 각각 앉아, 서, 그리고 무릎을 꿇 각 연령 범위에 대한 %입니다.

category Segment  Pageviews Percentage 
Sitting  Age 25-34 2268  21% 
      Age 35-44 2942  27% 
      Age 45-53 2209  20% 
      Age 55+  3317  31% 
Standing Age 25-34 2193  ... 
      Age 35-44 1664  ... 
      Age 45-53 1874  ... 
      Age 55+  1647 
Kneeling Age 25-34 680 
      Age 35-44 494 
      Age 45-53 876 
      Age 55+  1489 

답변

3

당신은 사용할 수 있습니다

>>> df['Percentage'] = df.groupby('category')['Pageviews']\ 
         .apply(lambda g: 100*g/g.sum()) 

    category Segment Pageviews Percentage 
0 Sitting Age25-34  2268 21.125186 
1 Sitting Age35-44  2942 27.403130 
2 Sitting Age45-53  2209 20.575633 
3 Sitting Age55+  3317 30.896051 
4 Standing Age25-34  2193 29.723502 
5 Standing Age35-44  1664 22.553538 
6 Standing Age45-53  1874 25.399837 
7 Standing Age55+  1647 22.323123 
8 Kneeling Age25-34  680 19.214467 
9 Kneeling Age35-44  494 13.958745 
10 Kneeling Age45-53  876 24.752755 
11 Kneeling Age55+  1489 42.074032 
관련 문제