2014-04-14 10 views
3

값과 변수가있는 pandas melt 및 groupby를 사용하여 다음 데이터 프레임을 만들었습니다. 나는 다음을 사용했다 :데이터 프레임 팬더의 합계의 백분율

df2 = pd.melt (df1) .groupby ([ 'value', 'variable']) [ '변수'] .count(). unstack ('variable'). fillna (0)) 나는 '없음'행을 제외하고 '바닥', '최고'의 합계의 비율을 생성하고, '평범한'행 출력을 만들 찾고 있어요

  Percentile  Percentile1  Percentile2  Percentile3 
value            
None   0    16    32    48 
bottom  0    69    85    88 
top   0    69    88    82 
mediocre  414   260    209    196 

. 욕망의 결과는 다음과 같습니다. 전 출력을 동일하게 새로운 행을 생성한다 고투있어 이것의 주요부

  Percentile  Percentile1  Percentile2  Percentile3 
value            
bottom  0%   17.3%    22.3%    24.0%  
top   0%   17.3%    23.0%    22.4%  
mediocre  414%   65.3%    54.7%    53.6% 

하나. 어떤 도움이라도 대단히 감사하겠습니다!

답변

10

는이 같은 'None' 행을 삭제할 수 있습니다 : 당신이 원하지 않는 경우

df2 = df2.drop('None') 

그것이 영구적 df2 다시 그 결과를 할당 할 필요가 없습니다 떨어졌다.

그럼 당신이 원하는 출력을 얻을 : 영구적으로 None 행 떨어없이

df2.apply(lambda c: c/c.sum() * 100, axis=0) 
Out[11]: 
      Percentile1 Percentile2 Percentile3 
value           
bottom  17.336683 22.251309 24.043716 
top   17.336683 23.036649 22.404372 
mediocre 65.326633 54.712042 53.551913 

그냥 결과를 바로 얻을 :

df2.drop('None').apply(lambda c: c/c.sum() * 100, axis=0) 
+3

apply''를 통해 갈 필요가; '100 * df2/df2.sum()'이 작동해야합니다. – DSM

관련 문제