Python DataFrame 인덱스 변경 제거 reset_index

판다스 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()를 사용해 인덱스를 제거하거나 변경하는 방법에 대해 알아봤습니다.

댓글