Pandas Dataframe의 색인을 열로 변환하는 방법

  1. df.index를 사용하여 인덱스를 새 열로 추가
  2. reset_indexrename_axis는 현재 인덱스 열 이름을 바꿉니다
  3. 열을 인덱스로 변환하는set_index 메소드
  4. column에 여러 개의 색인 레이어를 설정하는 MultiIndex

Pandas dataframeindexdf.index,set_index,reset_index와 같은rename_axis와 같은 열로 변환하여index의 이름을 바꾸는 다양한 방법을 소개합니다.

또한 여러 계층의 인덱스가있는 주어진 DataframeMulti-Index를 적용하는 방법도 소개합니다.

df.index를 사용하여 인덱스를 새 열로 추가

컬럼으로 인덱스를 추가하는 가장 간단한 방법은df.index를 새 컬럼으로 dataframe에 추가하는 것입니다.

예제 코드:

# python 3.x
import pandas as pd
df = pd.DataFrame([
    (1,2,None),
    (None,4,None),
    (5,None,7),
    (5,None,None)
    ],columns=['a','b','d'])
df['index'] = df.index
print(df)

산출:

     a    b    d  index1
0  1.0  2.0  NaN       0
1  NaN  4.0  NaN       1
2  5.0  NaN  7.0       2
3  5.0  NaN  NaN       3

reset_indexrename_axis는 현재 인덱스 열 이름을 바꿉니다

우리는index의 이름을 바꾸고reset_index를 시리즈로 사용할 수 있습니다:

# python 3.x
import pandas as pd

df = pd.DataFrame([
    (1,2,None),
    (None,4,None),
    (5,None,7),
    (5,None,None)], 
    columns=['a','b','d'])
df = df.rename_axis('index').reset_index()
print(df)

산출:

   index    a    b    d
0      0  1.0  2.0  NaN
1      1  NaN  4.0  NaN
2      2  5.0  NaN  7.0
3      3  5.0  NaN  NaN

열을 인덱스로 변환하는set_index 메소드

set_index 메소드를 사용하여 컬럼을 인덱스로 변환 할 수 있습니다:

# python 3.x
import pandas as pd
df = pd.DataFrame([
    (1,2,None),
    (None,4,None),
    (5,4,7),
    (5,5,None)], 
    columns=['a','b','d'])
df.set_index('b',inplace=True)
print(df)

산출:

     a    d
b          
2  1.0  NaN
4  NaN  NaN
4  5.0  7.0
5  5.0  NaN

또는 원본에서와 같이 색인 이름을 제거하려면df.index.name = None을 수행 할 수 있습니다.

# python 3.x
import pandas as pd
df = pd.DataFrame([
    (1,2,None),
    (None,4,None),
    (5,4,7),
    (5,5,None)
    ],columns=['a','b','d'])
df.set_index('b',inplace=True)
df.index.name = None
print(df)

산출:

     a    d
2  1.0  NaN
4  NaN  NaN
4  5.0  7.0
5  5.0  NaN

column에 여러 개의 색인 레이어를 설정하는 MultiIndex

MultiIndex.from_product()함수를 사용하여 다음과 같이 MultiIndex를 만들 수 있습니다:

# python 3.x
import pandas as pd
import numpy as np
index = pd.MultiIndex.from_product([
    ['Burger', 'Steak', 'Sandwich'], 
    ['Half', 'Full']], 
    names=['Item', 'Type'])
df = pd.DataFrame(index=index, 
                  data=np.random.randint
                  (0, 10, (6,4)), 
                  columns=list('abcd'))
print(df)

산출:

               a  b  c  d
Item     Type            
Burger   Half  0  3  9  1
         Full  2  2  0  5
Steak    Half  8  4  5  5
         Full  5  8  0  7
Sandwich Half  2  8  9  5
         Full  4  4  5  9

관련 문장 - Pandas DataFrame

  • Pandas DataFrame에서 빈 열을 만드는 방법