programing

재설정 인덱스 이름을 지정할 수 있습니까?

powerit 2023. 7. 27. 22:27
반응형

재설정 인덱스 이름을 지정할 수 있습니까?

일반적으로 데이터 프레임이 다음을 겪을 때reset_index()새 열에 이름이 할당됩니다.index또는level_i수준에 따라

새 열에 이름을 지정할 수 있습니까?

전화할 수 있습니다.rename에서 돌아오는 길에reset_index:

In [145]:
# create a df
df = pd.DataFrame(np.random.randn(5,3))
df

Out[145]:
          0         1         2
0 -2.845811 -0.182439 -0.526785
1 -0.112547  0.661461  0.558452
2  0.587060 -1.232262 -0.997973
3 -1.009378 -0.062442  0.125875
4 -1.129376  3.282447 -0.403731

인덱스 이름 설정

In [146]:    
df.index = df.index.set_names(['foo'])
df

Out[146]:
            0         1         2
foo                              
0   -2.845811 -0.182439 -0.526785
1   -0.112547  0.661461  0.558452
2    0.587060 -1.232262 -0.997973
3   -1.009378 -0.062442  0.125875
4   -1.129376  3.282447 -0.403731

불러reset_index그리고 연쇄적으로rename:

In [147]:
df.reset_index().rename(columns={df.index.name:'bar'})

Out[147]:
   bar         0         1         2
0    0 -2.845811 -0.182439 -0.526785
1    1 -0.112547  0.661461  0.558452
2    2  0.587060 -1.232262 -0.997973
3    3 -1.009378 -0.062442  0.125875
4    4 -1.129376  3.282447 -0.403731

@ayhan 덕분에

또는 사용할 수 있습니다.rename_axis이전에 인덱스 이름을 변경합니다.reset_index:

In [149]:
df.rename_axis('bar').reset_index()

Out[149]:
   bar         0         1         2
0    0 -2.845811 -0.182439 -0.526785
1    1 -0.112547  0.661461  0.558452
2    2  0.587060 -1.232262 -0.997973
3    3 -1.009378 -0.062442  0.125875
4    4 -1.129376  3.282447 -0.403731

또는 먼저 인덱스 이름을 직접 덮어씁니다.

df.index.name = 'bar'

그리고 나서 전화합니다.reset_index

다음을 수행할 수 있습니다(2020년 1월).

df = df.reset_index().rename(columns={'index': 'bar'})
print(df)
   bar         0         1         2
0    0 -2.845811 -0.182439 -0.526785
1    1 -0.112547  0.661461  0.558452
2    2  0.587060 -1.232262 -0.997973
3    3 -1.009378 -0.062442  0.125875
4    4 -1.129376  3.282447 -0.403731

시리즈의 경우 이름을 직접 지정할 수 있습니다.예:

>>> df.groupby('s1').size().reset_index(name='new_name')
  s1  new_name
0  b         1
1  r         1
2  s         1

사용할 수 있습니다.names버전 1.5.0에 도입된 매개 변수는 다음과 같습니다.

이름: int, stor 또는 1차원 목록, 기본값 없음

지정된 문자열을 사용하여 인덱스 데이터가 들어 있는 DataFrame 열의 이름을 변경합니다.DataFrame에 MultiIndex가 있는 경우 이 값은 레벨 수와 같은 길이의 리스트 또는 튜플이어야 합니다.

단일 인덱스 수준 데이터 프레임의 경우:

         class  max_speed                                        name   class  max_speed
falcon    bird      389.0   df.reset_index(names='name')    0  falcon    bird      389.0
parrot    bird       24.0  ------------------------------>  1  parrot    bird       24.0
lion    mammal       80.5                                   2    lion  mammal       80.5
monkey  mammal        NaN                                   3  monkey  mammal        NaN

다중 인덱스 수준 데이터 프레임의 경우:

               speed species                                                   classes   names  speed species
                 max    type                                                                      max    type
class  name                                                                  0    bird  falcon  389.0     fly
bird   falcon  389.0     fly   df.reset_index(names=['classes', 'names'])    1    bird  parrot   24.0     fly
       parrot   24.0     fly  -------------------------------------------->  2  mammal    lion   80.5     run
mammal lion     80.5     run                                                 3  mammal  monkey    NaN    jump
       monkey    NaN    jump

다중 인덱스에서 하나의 수준에만 관심이 있는 경우

               speed species                                                            classes  speed species
                 max    type                                                                       max    type
class  name                    df.reset_index(level='class', names='classes')    name
bird   falcon  389.0     fly  ------------------------------------------------>  falcon    bird  389.0     fly
       parrot   24.0     fly                                                     parrot    bird   24.0     fly
mammal lion     80.5     run                                                     lion    mammal   80.5     run
       monkey    NaN    jump                                                     monkey  mammal    NaN    jump

참고:reset_index()기본적으로 배치되지 않습니다. 결과를 다시 할당하거나 사용해야 합니다.inplace=True,예를들면

df = df.reset_index(names='name')
# or
df.reset_index(names='name', inplace=True)

새 데이터 프레임을 반환하는 한 줄자를 찾고 있는 경우 를 사용합니다.다음은 예입니다.

>>> df = pd.DataFrame({"a": [4.4, 2.2], "b": 8}, index=[10, 20])
>>> df
      a  b
10  4.4  8
20  2.2  8

할당bar인덱스 값을 사용하여 시리즈를 수행하지만 원래 인덱스는 유지합니다.

>>> df.assign(bar=df.index)
      a  b  bar
10  4.4  8   10
20  2.2  8   20

유사하지만 인덱스를 삭제합니다.

>>> df.assign(bar=df.index).reset_index(drop=True)
     a  b  bar
0  4.4  8   10
1  2.2  8   20

reset_index()를 사용하여 시리즈에서 데이터 프레임으로 이동하는 경우 열 이름을 다음과 같이 지정할 수 있습니다.

my_series.rename('Example').reset_index()

언급URL : https://stackoverflow.com/questions/40914200/can-i-assign-a-reset-index-a-name

반응형