반응형
열 MultiIndex 수준 (제 경우에는 basic_amt
)을 두 번 전치하는 것을 제외하고 더 짧은 방법이 있습니까?
In [704]: test
Out[704]:
basic_amt
Faculty NSW QLD VIC All
All 1 1 2 4
Full Time 0 1 0 1
Part Time 1 0 2 3
In [705]: test.reset_index(level=0, drop=True)
Out[705]:
basic_amt
Faculty NSW QLD VIC All
0 1 1 2 4
1 0 1 0 1
2 1 0 2 3
In [711]: test.transpose().reset_index(level=0, drop=True).transpose()
Out[711]:
Faculty NSW QLD VIC All
All 1 1 2 4
Full Time 0 1 0 1
Part Time 1 0 2 3
해결 방법
import pandas as pd
cols = pd.MultiIndex.from_arrays([['basic_amt']*4,
['NSW','QLD','VIC','All']],
names = [None, 'Faculty'])
idx = pd.Index(['All', 'Full Time', 'Part Time'])
df = pd.DataFrame([(1,1,2,4),
(0,1,0,1),
(1,0,2,3)], index = idx, columns=cols)
print (df)
basic_amt
Faculty NSW QLD VIC All
All 1 1 2 4
Full Time 0 1 0 1
Part Time 1 0 2 3
df.columns = df.columns.droplevel(0)
#pandas 0.18.0 and higher
df = df.rename_axis(None, axis=1)
#pandas bellow 0.18.0
#df.columns.name = None
print (df)
NSW QLD VIC All
All 1 1 2 4
Full Time 0 1 0 1
Part Time 1 0 2 3
print (df.columns)
Index(['NSW', 'QLD', 'VIC', 'All'], dtype='object')
두 열 이름이 모두 필요한 경우 list
이해력을 사용합니다.
df.columns = ['_'.join(col) for col in df.columns]
print (df)
basic_amt_NSW basic_amt_QLD basic_amt_VIC basic_amt_All
All 1 1 2 4
Full Time 0 1 0 1
Part Time 1 0 2 3
print (df.columns)
Index(['basic_amt_NSW', 'basic_amt_QLD', 'basic_amt_VIC', 'basic_amt_All'], dtype='object')
참조 페이지 https://stackoverflow.com/questions/14189695
반응형
'파이썬' 카테고리의 다른 글
파이썬 Pylint의 "너무 적은 공개 방법"메시지는 무엇을 의미합니까? (0) | 2021.01.30 |
---|---|
파이썬 Flask는 선택적 URL 매개 변수를 가질 수 있습니까? (0) | 2021.01.30 |
파이썬 Excel 데이터에서 Python 만들기 사전 (0) | 2021.01.29 |
파이썬 Python - smtp requires authentication (0) | 2021.01.29 |
파이썬 색인으로 목록에 액세스하려고 할 때 Python 오류- "목록 색인은 str이 아닌 정수 여야합니다." (0) | 2021.01.29 |
댓글