2017-04-20 4 views
1

내가 Scrapy와 주택 광고를 긁어와 팬더와 결과를 분석하고 있습니다팬더는 : 조건부 집계는 평균과 중앙값

을 설정합니다.

위치를 그룹화하고 여러 주택 특성 (예 : 임대료)을 종합하여 데이터 프레임을 구성합니다.


I는 동일한 dataframes, 즉 위치 위에 그룹화 하우징 특성 위에 응집하지만 이제 조건부 응집을 구성 할

문제.

즉, 각각 type이라는 주택 광고의 특성은 1 또는 2입니다. 나는 조건부로 그룹화하고 type1 또는 2 인 조건부로 주택 특성을 집계하고 싶습니다.


코드

group = ['borough','click district name for housing ads','district'] 
mdf['# for rent'] = 1 
aggregator = { 
     'median rent pw':'median', 
     'rent pw':'mean', 
     '# of roommates':'mean', 
     '# for rent':'sum', 
     } 

badf = mdf.groupby(group)['median rent pw','rent pw','# of roommates'].agg(aggregator)  

이 조건부로 집계하지 않습니다 내 작업 코드입니다.

type에 대해 하나씩 mdf을 두 개의 DataFrames로 나눠서 두 개의 프레임에서 코드를 실행하고 결과를 하나의 테이블로 병합 할 수 있다고 생각했습니다. 그래도 조금 비효율적 인 것 같습니다. 내가 가야합니까 어떻게

aggregator = { 
     'median rent pw type 1 ':'median, conditionally on type = 1', 
     'median rent pw type 2 ':'median, conditionally on type = 2', 
     'median rent pw':'median', 
     'rent pw type 1':'mean, conditionally on type = 1', 
     'rent pw type 2':'mean, conditionally on type = 2', 
     'rent pw':'mean', 
     '# of roommates':'mean', 
     '# for rent':'sum', 
     } 

:

바람직하게는, 나는 코드가 같은 것을 할 싶어? 내가 잘못 본게 아니라면

답변

1

, 나는 그런 당신이 type == 1

badf.loc[1] 

또는

badf.xs(1) 
에서 얻을 수 있어야 그냥 groupby

group = ['type', 'borough','click district name for housing ads','district'] 
mdf['# for rent'] = 1 
aggregator = { 
     'median rent pw':'median', 
     'rent pw':'mean', 
     '# of roommates':'mean', 
     '# for rent':'sum', 
     } 

badf = mdf.groupby(group)['median rent pw','rent pw','# of roommates'].agg(aggregator)  

type을 포함 할 수 있다고 생각

+0

나는 지옥에 빠질 것이다. 감사! Btw, badf.loc [1]과 badf.xs (1) 모두 작동합니다. – LucSpan