팬더 인덱스 컬럼 제목 또는 이름
비단뱀 판다의 인덱스 컬럼 이름은 어떻게 얻나요?데이터 프레임의 예를 다음에 나타냅니다.
Column 1
Index Title
Apples 1
Oranges 2
Puppies 3
Ducks 4
데이터 프레임인덱스 타이틀을 취득/설정하려고 합니다.제가 시도한 것은 다음과 같습니다.
import pandas as pd
data = {'Column 1' : [1., 2., 3., 4.],
'Index Title' : ["Apples", "Oranges", "Puppies", "Ducks"]}
df = pd.DataFrame(data)
df.index = df["Index Title"]
del df["Index Title"]
print df
이거 할 줄 아는 사람?
인덱스를 가져오거나 설정할 수 있습니다.name
소유물
In [7]: df.index.name
Out[7]: 'Index Title'
In [8]: df.index.name = 'foo'
In [9]: df.index.name
Out[9]: 'foo'
In [10]: df
Out[10]:
Column 1
foo
Apples 1
Oranges 2
Puppies 3
Ducks 4
를 사용하여 다음 세트를 삭제할 수 있습니다.None
:
d = {'Index Title': ['Apples', 'Oranges', 'Puppies', 'Ducks'],'Column 1': [1.0, 2.0, 3.0, 4.0]}
df = pd.DataFrame(d).set_index('Index Title')
print (df)
Column 1
Index Title
Apples 1.0
Oranges 2.0
Puppies 3.0
Ducks 4.0
print (df.index.name)
Index Title
print (df.columns.name)
None
새로운 기능은 메서드 체인에서 잘 작동합니다.
df = df.rename_axis('foo')
print (df)
Column 1
foo
Apples 1.0
Oranges 2.0
Puppies 3.0
Ducks 4.0
매개 변수를 사용하여 열 이름을 변경할 수도 있습니다.axis
:
d = {'Index Title': ['Apples', 'Oranges', 'Puppies', 'Ducks'],'Column 1': [1.0, 2.0, 3.0, 4.0]}
df = pd.DataFrame(d).set_index('Index Title').rename_axis('Col Name', axis=1)
print (df)
Col Name Column 1
Index Title
Apples 1.0
Oranges 2.0
Puppies 3.0
Ducks 4.0
print (df.index.name)
Index Title
print (df.columns.name)
Col Name
print df.rename_axis('foo').rename_axis("bar", axis="columns")
bar Column 1
foo
Apples 1.0
Oranges 2.0
Puppies 3.0
Ducks 4.0
print df.rename_axis('foo').rename_axis("bar", axis=1)
bar Column 1
foo
Apples 1.0
Oranges 2.0
Puppies 3.0
Ducks 4.0
버전부터pandas 0.24.0+
사용 가능한 파라미터index
그리고.columns
:
df = df.rename_axis(index='foo', columns="bar")
print (df)
bar Column 1
foo
Apples 1.0
Oranges 2.0
Puppies 3.0
Ducks 4.0
인덱스 및 열 이름을 제거하면 다음과 같이 설정됩니다.None
:
df = df.rename_axis(index=None, columns=None)
print (df)
Column 1
Apples 1.0
Oranges 2.0
Puppies 3.0
Ducks 4.0
한다면MultiIndex
인덱스만:
mux = pd.MultiIndex.from_arrays([['Apples', 'Oranges', 'Puppies', 'Ducks'],
list('abcd')],
names=['index name 1','index name 1'])
df = pd.DataFrame(np.random.randint(10, size=(4,6)),
index=mux,
columns=list('ABCDEF')).rename_axis('col name', axis=1)
print (df)
col name A B C D E F
index name 1 index name 1
Apples a 5 4 0 5 2 2
Oranges b 5 8 2 5 9 9
Puppies c 7 6 0 7 8 3
Ducks d 6 5 0 1 6 0
print (df.index.name)
None
print (df.columns.name)
col name
print (df.index.names)
['index name 1', 'index name 1']
print (df.columns.names)
['col name']
df1 = df.rename_axis(('foo','bar'))
print (df1)
col name A B C D E F
foo bar
Apples a 5 4 0 5 2 2
Oranges b 5 8 2 5 9 9
Puppies c 7 6 0 7 8 3
Ducks d 6 5 0 1 6 0
df2 = df.rename_axis('baz', axis=1)
print (df2)
baz A B C D E F
index name 1 index name 1
Apples a 5 4 0 5 2 2
Oranges b 5 8 2 5 9 9
Puppies c 7 6 0 7 8 3
Ducks d 6 5 0 1 6 0
df2 = df.rename_axis(index=('foo','bar'), columns='baz')
print (df2)
baz A B C D E F
foo bar
Apples a 5 4 0 5 2 2
Oranges b 5 8 2 5 9 9
Puppies c 7 6 0 7 8 3
Ducks d 6 5 0 1 6 0
인덱스 및 열 이름을 제거하면 다음과 같이 설정됩니다.None
:
df2 = df.rename_axis(index=(None,None), columns=None)
print (df2)
A B C D E F
Apples a 6 9 9 5 4 6
Oranges b 2 6 7 4 3 5
Puppies c 6 3 6 3 5 1
Ducks d 4 9 1 3 0 5
위해서MultiIndex
인덱스 및 컬럼에서 작업해야 합니다..names
대신.name
목록 또는 튜플별로 설정합니다.
mux1 = pd.MultiIndex.from_arrays([['Apples', 'Oranges', 'Puppies', 'Ducks'],
list('abcd')],
names=['index name 1','index name 1'])
mux2 = pd.MultiIndex.from_product([list('ABC'),
list('XY')],
names=['col name 1','col name 2'])
df = pd.DataFrame(np.random.randint(10, size=(4,6)), index=mux1, columns=mux2)
print (df)
col name 1 A B C
col name 2 X Y X Y X Y
index name 1 index name 1
Apples a 2 9 4 7 0 3
Oranges b 9 0 6 0 9 4
Puppies c 2 4 6 1 4 4
Ducks d 6 6 7 1 2 8
체크/설정 값에는 여러 개가 필요합니다.
print (df.index.name)
None
print (df.columns.name)
None
print (df.index.names)
['index name 1', 'index name 1']
print (df.columns.names)
['col name 1', 'col name 2']
df1 = df.rename_axis(('foo','bar'))
print (df1)
col name 1 A B C
col name 2 X Y X Y X Y
foo bar
Apples a 2 9 4 7 0 3
Oranges b 9 0 6 0 9 4
Puppies c 2 4 6 1 4 4
Ducks d 6 6 7 1 2 8
df2 = df.rename_axis(('baz','bak'), axis=1)
print (df2)
baz A B C
bak X Y X Y X Y
index name 1 index name 1
Apples a 2 9 4 7 0 3
Oranges b 9 0 6 0 9 4
Puppies c 2 4 6 1 4 4
Ducks d 6 6 7 1 2 8
df2 = df.rename_axis(index=('foo','bar'), columns=('baz','bak'))
print (df2)
baz A B C
bak X Y X Y X Y
foo bar
Apples a 2 9 4 7 0 3
Oranges b 9 0 6 0 9 4
Puppies c 2 4 6 1 4 4
Ducks d 6 6 7 1 2 8
인덱스 및 열 이름을 제거하면 다음과 같이 설정됩니다.None
:
df2 = df.rename_axis(index=(None,None), columns=(None,None))
print (df2)
A B C
X Y X Y X Y
Apples a 2 0 2 5 2 0
Oranges b 1 7 5 5 4 8
Puppies c 2 4 6 3 6 5
Ducks d 9 6 3 9 7 0
@Jeff 솔루션:
df.index.names = ['foo','bar']
df.columns.names = ['baz','bak']
print (df)
baz A B C
bak X Y X Y X Y
foo bar
Apples a 3 4 7 3 3 3
Oranges b 1 2 5 8 1 0
Puppies c 9 6 3 9 6 3
Ducks d 3 2 1 0 1 0
df.index.name
효과가 있을 거야
Python은dir
오브젝트 속성을 쿼리할 수 있는 함수입니다. dir(df.index)
도움이 되었습니다.
사용하다df.index.rename('foo', inplace=True)
인덱스 이름을 설정합니다.
이 API는 판다 0.13부터 사용할 수 있는 것 같습니다.
새 행을 만들지 않고 빈 셀에 넣는 경우 다음을 사용합니다.
df.columns.name = 'foo'
그 이외의 사용:
df.index.name = 'foo'
인덱스 이름 설정은 작성 시 수행할 수도 있습니다.
pd.DataFrame(data={'age': [10,20,30], 'height': [100, 170, 175]}, index=pd.Series(['a', 'b', 'c'], name='Tag'))
df.columns.values
또한 컬럼 이름을 알려주시기 바랍니다.
멀티인덱스 솔루션은 Jezrael의 사이클로빅 답변 안에 있지만 찾는 데 시간이 걸려서 새로운 답변을 올립니다.
df.index.names
는 (Frozen list로서) 멀티 인덱스의 이름을 나타냅니다.
인덱스 열 이름만 가져오려면df.index.names
는 판다의 최신 버전인 단일 인덱스 또는 다중 인덱스 모두에서 작동합니다.
인덱스 이름 + 열 이름 목록을 가져오는 가장 좋은 방법을 찾다가 이것을 발견한 사람으로서, 이 답변이 유용하다는 것을 알게 되었습니다.
names = list(filter(None, df.index.names + df.columns.values.tolist()))
인덱스 없음, 단일 열 인덱스 또는 다중 인덱스에 대해 작동합니다.reset_index() 호출을 회피합니다.이러한 단순한 조작에 불필요한 퍼포먼스 히트가 발생합니다.이것을 위한 정해진 방법이 없다니 놀랍다.데이터 프레임 인덱스가 기본/고유 키로 매핑되는 데이터베이스에서 데이터를 삭제하기 때문에 이 기능이 더 자주 필요하게 됩니다. 그러나 실제로는 다른 열에 불과합니다.
언급URL : https://stackoverflow.com/questions/18022845/pandas-index-column-title-or-name
'source' 카테고리의 다른 글
MariaDB에서 Mysql로 마이그레이션 - 중복 제약 조건 이름 (0) | 2022.10.29 |
---|---|
Python 클래스를 동적으로 로드하는 방법 (0) | 2022.10.20 |
mysql/mariadb(또는 amazon orora)에서의 멀티 테넌트(Multi-tenant) 접근방식의 실용적인 구현 (0) | 2022.10.20 |
Class 파일의 바이트 코드를 볼 수 있나요? (0) | 2022.10.20 |
Rails 5 커스텀 데이터베이스 타입GIS + Maria의 경우DB (0) | 2022.10.20 |