2017-03-15 6 views
0

BS4로 주택 광고를 긁어 내고 팬더를 사용하여 데이터를 분석합니다. 팬더 그룹은 여러 열을 의미하고 단일 열을 계산합니다.

다음 명령

,

madrid_rooms_district=df.groupby('district', as_index=False)['rent','size house, m2', 'price per m2','deposit'].agg(['mean', 'size']) 

한 행당 지구 및 열당 'rent','size house, m2', 'price per m2','deposit' 대한 지구 수단 테이블을 산출한다. 그게 내가 필요한거야.

또한 하나의 열이 지역 당 광고 수를 표시하므로 은 .agg()입니다. 그러나 현재 명령을 설정하면 네 개의 개의 열이 광고 수를 표시하고 각 항목 당 하나의 열은 ['rent','size house, m2', 'price per m2','deposit']입니다.

어떻게 "카운팅"열의 수가 4 대 1로 줄어들 수 있습니까?

예. 나는 다른 두 DataFrames를 만들어이 문제를 해결하기 위해 노력했습니다

district | rent; mean | rent; size | size house, m2; mean | size house, m2; mean | ... 
    ----------------------------------------------------------------------------------- 
    A  | 300  |  2  |  100   |  2    | ... 
    B  | 400  |  6  |  200   |  6    | ... 
    C  | 500  |  3  |  120   |  3    | ... 

내가 필요

district | rent; mean | size house, m2; mean | price per m2; mean | deposit; mean | count 
    --------------------------------------------------------------------------------------- 
    A  | 300  |  100   |  15   |  1  | 2 
    B  | 400  |  200   |  14   |  2  | 6 
    C  | 500  |  120   |  12   |  3  | 3 

,있다; 하나는 계수 용이고 하나는 계수 용이지만 하나의 DataFrame으로 병합 할 수는 없습니다. 시리즈 시도, 참여 시도 추가하려고 시도 ...

답변

0

간단한 옵션은 원본 데이터 셋에 사람의 열을 추가하는 것입니다, 다음이 열 합계 ("계산"를 호출 할 수 있습니다) :

df['count'] = 1 
aggregator = {'rent' : 'mean', 
       'size house, m2' : 'mean', 
       'price per m2': 'mean', 
       'deposit' : 'mean', 
       'count': 'sum'} 
madrid_rooms_district = df.groupby('district', as_index=False)['rent','size house, m2', 'price per m2', 'deposit'].agg(aggregator) 
+0

좋아요! 매력처럼 작동합니다. 고맙습니다. – LucSpan

+0

@ LucSpan 여기까지 훌륭했습니다. 만약 당신이 행복하다면 그것을 답으로 표시하십시오 :) – Igor

관련 문제