<질문>
python pandas에서 인덱스 열 이름을 어떻게 얻습니까? 다음은 데이터 프레임의 예입니다.
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
이 작업을 수행하는 방법을 아는 사람이 있습니까?
<답변1>
인덱스를 통해 인덱스를 가져오거나 설정할 수 있습니다.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
<답변2>
당신이 사용할 수있는rename_axis
, 제거를 위해 다음으로 설정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
<답변3>
df.index.name
트릭을 수행해야합니다.
파이썬에는dir
개체 속성을 쿼리할 수 있는 기능입니다.dir(df.index)
여기서 도움이 되었습니다.
<답변4>
사용df.index.rename('foo', inplace=True)
인덱스 이름을 설정합니다.
이 API는 이후 사용 가능한 것 같습니다pandas 0.13.
<답변5>
새 행을 생성하지 않고 단순히 빈 셀에 넣으려면 다음을 사용하십시오.
df.columns.name = 'foo'
그렇지 않으면 다음을 사용하십시오.
df.index.name = 'foo'
<답변6>
인덱스 이름 설정은 생성 시 수행할 수도 있습니다.
pd.DataFrame(data={'age': [10,20,30], 'height': [100, 170, 175]}, index=pd.Series(['a', 'b', 'c'], name='Tag'))
<답변7>
df.columns.values
또한 우리에게 열 이름을 제공
<답변8>
다중 인덱스에 대한 솔루션은 jezrael의 cyclopedic 답변 안에 있지만 찾는 데 시간이 걸려서 새로운 답변을 게시하고 있습니다.
df.index.names
다중 인덱스의 이름을 제공합니다(Frozenlist로).
<답변9>
인덱스 열 이름을 얻으려면df.index.names
가장 최신 버전의 pandas를 기준으로 단일 인덱스 또는 MultiIndex 모두에서 작동합니다.
인덱스 이름 + 열 이름 목록을 얻는 가장 좋은 방법을 찾는 동안 이것을 찾은 사람으로서 이 답변이 유용하다는 것을 알았을 것입니다.
names = list(filter(None, df.index.names + df.columns.values.tolist()))
인덱스 없음, 단일 열 인덱스 또는 MultiIndex에 대해 작동합니다. 이러한 간단한 작업에 대해 불필요한 성능 저하가 있는 reset_index() 호출을 피합니다. 나는 이것에 대한 기본 제공 방법이 없다는 것에 놀랐습니다. 데이터 프레임 인덱스가 기본/고유 키에 매핑되는 데이터베이스에서 데이터를 이동하고 있지만 실제로는 또 다른 열에 불과하기 때문에 이것이 더 자주 필요하다고 생각합니다.
'개발 > Python' 카테고리의 다른 글
[파이썬] 파일을 읽으면 파일 핸들이 계속 열려 있어야 할까? (0) | 2023.01.22 |
---|---|
[파이썬] 파일이 비어 있는지 확인하는 방법 (0) | 2023.01.21 |
[파이썬] sql에서 'count(distinct)'를 Pandas에서 하는 방법 (0) | 2023.01.21 |
[파이썬] 선택적 인수가 있는 함수를 정의하는 방법 (0) | 2023.01.21 |