Python Library/Pandas

[Pandas - Python] Indexing with a DataFrame's Columns - set_index() (데이터 프레임의 열로 인덱싱 하는 법)

바보1 2022. 6. 15. 20:47

 

frame = pd.DataFrame({'a': range(7), 'b': range(7, 0, -1),
                      'c': ['one', 'one', 'one', 'two', 'two',
                            'two', 'two'],
                      'd': [0, 1, 2, 0, 1, 2, 3]})
frame


        a	b	c	d
0	0	7	one	0
1	1	6	one	1
2	2	5	one	2
3	3	4	two	0
4	4	3	two	1
5	5	2	two	2
6	6	1	two	3

원본 데이터 입니다.

 

이때 c, d를 인덱스로 설정하고 싶다면, frame.set_index(['c', 'd']) 하면 됩니다.

frame2 = frame.set_index(['c', 'd'])
frame2


            a	b
    c	d		
one	0	0	7
        1	1	6
        2	2	5
two	0	3	4
        1	4	3
        2	5	2
        3	6	1

보시다시피 c와 d를 기준으로 인덱스가 설정되었습니다.

이때도 계층적 인덱싱이 적용된 모습을 볼 수 있습니다.

 

만약 column에 있던 c와 d를 그대로 유지하면서 인덱스를 설정하고 싶다면, drop 파라미터에 False를 넘겨줍니다.

frame.set_index(['c', 'd'], drop=False)

		a	b	c	d
    c	d				
one	0	0	7	one	0
        1	1	6	one	1
        2	2	5	one	2
two	0	3	4	two	0
        1	4	3	two	1
        2	5	2	two	2
        3	6	1	two	3

 

 

기존의 c와 d는 그대로 유지됩니다.

 

이제 다시 reset_index() 함수를 사용해 인덱스를 초기화합시다.

frame2.reset_index()


        c	d	a	b
0	one	0	0	7
1	one	1	1	6
2	one	2	2	5
3	two	0	3	4
4	two	1	4	3
5	two	2	5	2
6	two	3	6	1

참고로 frame2에서는 c와 d가 인덱스였으므로 위치가 바뀝니다.