재설정 인덱스 이름을 지정할 수 있습니까?
일반적으로 데이터 프레임이 다음을 겪을 때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
'programing' 카테고리의 다른 글
부팅 시 스프링 보안 필터 체인 전에 필터 호출 (0) | 2023.07.27 |
---|---|
파일 경로에서 이미지 보기를 표시하시겠습니까? (0) | 2023.07.27 |
Python - 파일 사용 시기 vs 오픈 (0) | 2023.07.27 |
MariaDB Galera 클러스터 php 드라이버 (0) | 2023.07.27 |
sql에서 보기와 표의 차이 (0) | 2023.07.27 |