2017-04-18 1 views
0

팬더 데이터 프레임이 있습니다. 내가하려고 해요Pandas Dataframe의 부울 열을 피벗 테이블에 집계하는 방법.

id Quarter State 
True 15Q1 AZ 
False 17Q1 WY 
True 14Q2 NH 
False 15Q1 AZ 

: 많은 열 가운데이 같이 보일 것입니다 년 분기 (예 2016Q1)와 국가 (예를 들어, TX, CA), 있도록 제공 부울, 분기,이다 ID입니다 값으로 ID, 상태를 색인으로, 분기를 열로하여 피벗 테이블을 작성하십시오. agg_func으로 np.mean을 사용하고 싶습니다만, DataError: No numeric types to aggregate

count을 집계 함수로 사용하면 올바르게 표시됩니다. 그리고 내가 총 np.mean(df['id'])을 집계 할 때 .64을 얻게됩니다. 정확히 찾고자하는 출력 유형은 세분화 된 것보다 더 많이 집계됩니다. 그렇다면 np.sum은 왜 작동합니까?하지만 피벗 테이블에서 집계 함수로 사용할 때는 그렇지 않습니다. 어떻게 작동시킬 수 있습니까?

나는 TrueFalse을 1과 0으로 변환 할 수 있다고 생각하지만 실제로는 'id'열이 많기 때문에 이러한 방식으로 집계하려고합니다.

편집 : 예를 들어 장난감 데이터 세트가 아니라 전체 데이터 세트 만 표시되는 문제입니다. 나는 좀 더 놀았고 ValueError: No objects to concatenate은 'Year'또는 'State'의 집계 함수로 groupby를 사용하면 여전히 팝업됩니다. 시도 할 때 갑자기 나타납니다. df['id'].describe()

누구도 이런 문제가 발생 했습니까?

답변

0

귀하의 출력은 매우 명확하지 않습니다하지만 난 당신이

Quarter 14Q2 15Q1 17Q1 
State   
AZ  NaN  0.5  NaN 
NH  1.0  NaN  NaN 
WY  NaN  NaN  0.0 

당신은 0으로 NaN을 대체 할 pivot_table의 매개 변수 fill_values ​​= 0을 전달할 수 있습니다 얻을 당신이

pd.pivot_table(df, index='State', columns='Quarter', values = 'id', aggfunc='mean') 

필요하다고 생각 것입니다

+0

흠, 내가 시도한 것이고 작동하지 않았습니다. 내 실제 데이터 세트에는 장난감 데이터 세트에없는 이상한 점이 있다고 생각합니다. 나는 더 깊이 파헤쳐 볼 것이지만 나는 모든 것을 질문에 포함시킬 수 있을지는 의문이다. 그래도 도움을 주셔서 감사합니다. – yeangst

관련 문제