2014-10-01 2 views
1

오전 데이터 분석의 대부분은 R에서 Python으로 전환해야하며 다음 문제에 부딪 히고 있습니다. groupby()에 대한 개념적 이해의 결과 일 수 있습니다.그룹별로 하나의 열만()

나는 판다 (Pandas) 데이터 프레임을 가지고 있으며 여러 열을 기반으로 데이터를 요약하려고합니다. 다음 코드는 내가 원하는 것입니다.

enter image description here

df = df[(df["Lead Source"] != "chase") & (df["Lead Source"] != "SNE")] 
ndf = df[["Date", "Lead Source", "Model Group", "Leads"]].groupby(["Date", "Lead Source"]).sum() 

큰 보였다,하지만 난 다음을 실행할 때 하나의 '진짜'열이 것으로 나타났습니다. 또한, 행의 색인이 내가 기대했다 확실히 어떤 것으로 나타났다

ndf2.columns 
Out[39]: Index([u'Leads'], dtype='object') 

(참고로 NDF 단지 사본 ndf2입니다). 열 이름은 첫 번째 행에 표시되도록

enter image description here

어떻게 행을 조정할 수 있습니다. 결과는 다음과 같습니다.

Date  Lead Source Leads 
1/1/2014 ...   ... 
      ...   ... 
      ...   ... 

답변

2

당신이 사용할 수있는 다음 GROUPBY 작업이 MultiIndex와 DataFrame을 만드는 것을

ndf.reset_index() 

참고. DateLead Source으로 그룹화 했으므로 MultiIndex의 레벨 이름입니다. DateLead Source이 열 이름 아래에 한 행으로 표시되는 이유는 팬더가 색인 수준이 아니라 열임을 나타내려고하기 때문입니다. ndf.index.names을 살펴보십시오. reset_index을 호출하면 인덱스 수준이 열로 이동하고 인덱스의 번호가 다시 지정됩니다. groupby를 호출 할 때

는 또는 더 나은 아직 as_index=False option을 사용

ndf = (df[["Date", "Lead Source", "Model Group", "Leads"]] 
     .groupby(["Date", "Lead Source"], as_index=False).sum()) 

집계는 as_index=False 인덱스 값으로 사용되는 그룹화 된 값을 방지 할 수 있습니다.

관련 문제