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

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

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