판다스 DataFrame에 인덱스를 지정해 사용할 수 있습니다.
기본값인 0부터 시작하는 행번호 인덱스를 사용할 수도 있고, 컬럼명을 인덱스로 지정할 수도 있습니다.
행번호 인덱스가 컬럼명을 지정해 인덱스를 사용하는 경우 인덱스를 제거하는 방법을 알아보겠습니다.
샘플 데이터를 준비하겠습니다.
import pandas as pd
df = pd.DataFrame({'name': ['Alice','Bob','Charlie','Dave','Ellen','Frank'],
'age': [24,42,18,68,24,30],
'state': ['NY','CA','CA','TX','CA','NY'],
'point': [64,24,70,70,88,57]}
)
# 인덱스를 name로 지정
df.set_index('name', inplace=True)
print(df)
# age state point
# name
# Alice 24 NY 64
# Bob 42 CA 24
# Charlie 18 CA 70
# Dave 68 TX 70
# Ellen 24 CA 88
# Frank 30 NY 57
DataFrame에 먼저 데이터를 저장하고 set_index()를 사용해 인덱스를 name으로 지정했습니다.
행번호 인덱스가 아닌 컬럼명을 지정한 인덱스가 생성되었습니다.
인덱스를 지정하는 set_index() 메서드에 자세한 사용 방법은 아래를 참조 해주세요.
컬럼명 인덱스가 아닌 행 번호 인덱스로 사용하고 싶은 경우에는 reset_index를 사용해 컬럼명으로 지정한 인덱스를 제거할 수 있습니다.
import pandas as pd
df = pd.DataFrame({'name': ['Alice','Bob','Charlie','Dave','Ellen','Frank'],
'age': [24,42,18,68,24,30],
'state': ['NY','CA','CA','TX','CA','NY'],
'point': [64,24,70,70,88,57]}
)
# 인덱스를 name로 지정
df.set_index('name', inplace=True)
# 인덱스 제거
df_r = df.reset_index()
print(df_r)
결과
name age state point
0 Alice 24 NY 64
1 Bob 42 CA 24
2 Charlie 18 CA 70
3 Dave 68 TX 70
4 Ellen 24 CA 88
5 Frank 30 NY 57
컬럼명 name으로 지정한 인덱스가 삭제되고 행 번호 인덱스로 생성되었습니다.
컬럼명으로 인덱스를 다시 지정하고 싶은 경우에는 set_index()를 사용해 지정하면 됩니다.
인덱스를 다른 컬럼으로 변경하고 싶은 경우에는 reset_index()와 set_index()를 사용해 변경 가능합니다.
import pandas as pd
df = pd.DataFrame({'name': ['Alice','Bob','Charlie','Dave','Ellen','Frank'],
'age': [24,42,18,68,24,30],
'state': ['NY','CA','CA','TX','CA','NY'],
'point': [64,24,70,70,88,57]}
)
# 인덱스를 name로 지정
df.set_index('name', inplace=True)
print(df)
# age state point
# name
# Alice 24 NY 64
# Bob 42 CA 24
# Charlie 18 CA 70
# Dave 68 TX 70
# Ellen 24 CA 88
# Frank 30 NY 57
# 인덱스를 state로 변경
df_rs = df.reset_index().set_index('state')
print(df_rs)
# name age point
# state
# NY Alice 24 64
# CA Bob 42 24
# CA Charlie 18 70
# TX Dave 68 70
# CA Ellen 24 88
# NY Frank 30 57
name 컬럼으로 지정되었던 인덱스가 state 컬럼으로 변경되었습니다.
reset_index()를 사용해 인덱스를 제거하거나 변경하는 방법에 대해 알아봤습니다.
댓글