2016-07-27 7 views
2

매우 간단한 질문 일지 모르지만 팬더에서 그룹화 및 색인 생성이 어떻게 작동하는지 이해하려고합니다. 내가 p_id으로 그룹을하려고 할 때팬더 그룹핑 후 그룹화

 p_id rating 
0  1  5 
1  1  3 
2  1  2 
3  2  2 
4  3  5 
5  3  1 
6  3  3 
7  4  4 
8  4  5 

: 같은 DataFrame 보이는, 그래서 자동으로

이제
df = pd.DataFrame(data={ 
    'p_id': [1, 1, 1, 2, 3, 3, 3, 4, 4], 
    'rating': [5, 3, 2, 2, 5, 1, 3, 4, 5] 
}) 

, 인덱스가 할당 될 것이다 :

나는 다음과 같은 데이터로 DataFrame을 가지고의 말합시다 얻을 수 있습니다 :

>> df[['p_id', 'rating']].groupby('p_id').count() 
      rating 
p_id   
1   3 
2   1 
3   3 
4   2 

이제이 p_id가이 DataFrame의 인덱스가되지만 첫 번째 행 나는 이상한 표정을 짓는다. 왜 빈 평가 등급을 갖는 'p_id'색인을 가지고 있는가?

>> df[['p_id', 'rating']].groupby('p_id', as_index=False).count() 
     p_id rating 
0  1  3 
1  2  1 
2  3  3 
3  4  2 

지금 내가 이상한 첫 번째 열이없는,하지만 난 지수와 p_id 모두 가지고 :

은 내가 이렇게하면, 가지, 그것을 해결하는 방법을 알고있다.

as_index = False를 사용하지 않고 DataFrame을 그룹화하고이 추가 행을 처리하지 않아도 색인으로 p_id를 유지할 수있는 방법이 있습니까? 이 문서를 읽을 수있는 문서가 있으면 크게 환영 할 것입니다.

감사

답변

2

그것은 그냥 인덱스 이름 ...

데모 : 당신은 제거 할 수 AAA

In [48]: df 
Out[48]: 
    p_id rating 
AAA 
0  1  5 
1  1  3 
2  1  2 
3  2  2 
4  3  5 
5  3  1 
6  3  3 
7  4  4 
8  4  5 

: 인덱스 이름에서

In [46]: df 
Out[46]: 
    p_id rating 
0  1  5 
1  1  3 
2  1  2 
3  2  2 
4  3  5 
5  3  1 
6  3  3 
7  4  4 
8  4  5 

In [47]: df.index.name = 'AAA' 

에주의 그것 rename_axis() 방법을 사용하여 :

In [42]: df[['p_id', 'rating']].groupby('p_id').count().rename_axis(None) 
Out[42]: 
    rating 
1  3 
2  1 
3  3 
4  2 
+0

rename_axis로 바로 가기 주셔서 감사합니다. 나는 제거하는 방법을 안다. 그러나 그것이 처음부터 거기에 있다는 것은 약간 어색하다고 느낀다. 나는 그것이 왜 처음에 일어나는가에 대해서 궁금해합니다. – ymoiseev

+0

색인 이름이기 때문에. 소스 샘플 DF로 다음을 시도하십시오 :'df.index.name = 'AAA'; print (df)' – MaxU

+0

오, 알았어. 그래서 빈 행이 아니야. 바보 같은 질문에 대한 설명과 사과에 감사드립니다. – ymoiseev