안녕하세요 콥스랩(COBS LAB)입니다. 오늘 소개해드릴 주제는 pandas입니다. 이번시간에는 인덱스에 관해서 배워보도록 하겠습니다.
판다스 인덱스
데이터 프레임을 보면 인덱스를 새로 만들거나 수정해야 하는 상황이 있습니다. 이때 인덱스를 설정하는 방법을 배워보도록 하겠습니다.
set_index
set index 는 기존의 있던 행 인덱스를 제거하고 칼럼 중 하나를 인덱스로 설정하는 메소드입니다. 이때 기존의 인덱스는 사라집니다. 특정 칼럼을 Index로 설정하려면, 해당 칼럼을 set_index 메소드의 인자로 넣으면 됩니다.
df = pd.DataFrame({'name': ['A','B','C','D','E','F'],
'age': [20,22,18,18,24,30],
'state': ['서울','부산','대구','포항','울산','광주'],
'point': [74,84,70,90,88,97]}
)
df1 = df.set_index('name')
print(df1)
>>>
set_index()를 사용해 인덱스를 name으로 지정했습니다. 행번호 인덱스가 아닌 칼럼명(name)을 지정한 인덱스가 생성되었습니다.
인덱스로 지정한 칼럼을 DataFrame 열에 남겨놓고 싶으면 drop 설정을 False 로 합니다.
df = pd.DataFrame({'name': ['A','B','C','D','E','F'],
'age': [20,22,18,18,24,30],
'state': ['서울','부산','대구','포항','울산','광주'],
'point': [74,84,70,90,88,97]}
)
df1 = df.set_index('name', drop=False)
print(df1)
>>>
name 칼럼이 인덱스로 지정되었지만 DataFrame에는 값이 남아있는 것을 확인할 수 있습니다.
set_index()를 사용해서 인덱스를 설정하면 새로운 오브젝트를 반환합니다. 반환값 없이 원본 DataFrame에 적용하고 싶은 경우에는 inplace를 True로 설정합니다.
df = pd.DataFrame({'name': ['A','B','C','D','E','F'],
'age': [20,22,18,18,24,30],
'state': ['서울','부산','대구','포항','울산','광주'],
'point': [74,84,70,90,88,97]}
)
df.set_index('name', inplace=True)
print(df)
>>>
reset
기존에 설정된 행 인덱스를 제거하고 그 인덱스를 칼럼으로 추가하는 메소드입니다. 인덱스를 초기화하려면 reset_index 메소드를 사용하면 됩니다. 즉, set_index의 역기능입니다.
df = pd.DataFrame({'name': ['A','B','C','D','E','F'],
'age': [20,22,18,18,24,30],
'state': ['서울','부산','대구','포항','울산','광주'],
'point': [74,84,70,90,88,97]}
)
df.set_index('name', inplace=True)
df2 = df.reset_index()
print(df2)
>>>
칼럼을 name으로 지정한 인덱스가 삭제되고 행 번호 인덱스로 생성되었습니다. 칼럼명으로 인덱스를 다시 지정하고 싶은 경우에는 set_index()를 사용해 지정하면 됩니다.
오늘은 인덱스를 다른 컬럼으로 변경하고 싶은 경우에는 reset_index()와 set_index()를 사용해 변경하는 것을 배워봤습니다. 다음시간에는 멀티인덱스와 각 옵션 세부사항에 대해서 알아보도록 하겠습니다.
'pandas' 카테고리의 다른 글
pandas 기초(6) - 칼럼 배우기 part 1 (0) | 2023.01.30 |
---|---|
pandas 기초(5) - 데이터 프레임 정렬하기 (0) | 2023.01.28 |
pandas 기초(4) - loc와 iloc 차이 (2) | 2023.01.27 |
pandas 기초(2) - csv 읽기, DataFrame 필수 함수!! (0) | 2023.01.18 |
pandas 기초 (1) - pandas 개념, DataFrame, DataFrame 생성 (0) | 2023.01.17 |
댓글