본문 바로가기

카테고리 없음

[파이썬 pandas] 데이터프레임 컬럼 순서 변경, 추가, 이름 바꾸기

판다스를 사용하다 보면 생각보다 자주 필요한 기능이 칼럼의 순서를 바꾸고, 새 컬럼을 추가하고, 이름을 변경하는 것입니다. 사용법이 어려운 기능들은 아니지만 아직 pandas가 익숙하지 않은 분들은 종종 헷갈려하십니다. 이번 시간에는 칼럼을 다루는 세 가지 방법을 알아보겠습니다.

 

컬럼 순서 바꾸기

우선 오늘 예제로 사용할 데이터프레임을 만들겠습니다.  

 

# 라이브러리를 불러옵니다.
import pandas as pd
import numpy as np

# 데이터프레임을 생성합니다.
df = pd.DataFrame(
    {'name': ['KIM', 'LEE', 'SMITH','BROWN', 'MILLER'],
     'age': [24, 32, 43, 24, np.nan],
     'height': [178, 168, 171, 185, 176],
     'sex': ['M', 'F', 'F', 'M', 'F']})

# 데이터프레임을 출력합니다.
df

"""
	name	age	height	sex
0	KIM	24.0	178	M
1	LEE	32.0	168	F
2	SMITH	43.0	171	F
3	BROWN	24.0	185	M
4	MILLER	NaN	176	F
"""

 

컬럼(column) 순서를 바꾸는 방법은 대괄호 [ ] 안에 원하는 순서에 맞게 컬럼 이름이 정리된 리스트를 전달하는 것입니다. 아래 코드를 보면 df[ ] 안에 ['name', 'sex', 'age', 'height'] 순서로 정리된 리스트가 전달된 것을 볼 수 있습니다. 원래의 데이터프레임과 열 순서가 달라졌습니다.

 

df = df[['name', 'sex', 'age', 'height']]
df

"""
	name	sex	age	height
0	KIM	M	24.0	178
1	LEE	F	32.0	168
2	SMITH	F	43.0	171
3	BROWN	M	24.0	185
4	MILLER	F	NaN	176
"""

 

 

새 컬럼 추가하기

새로운 컬럼을 추가하는 가장 쉬운 방법을 먼저 보겠습니다.

 

df['country'] = 'korea'
df

"""
	name	sex	age	height	country
0	KIM	M	24.0	178	korea
1	LEE	F	32.0	168	korea
2	SMITH	F	43.0	171	korea
3	BROWN	M	24.0	185	korea
4	MILLER	F	NaN	176	korea
"""

 

다른 방법으로는 loc 함수를 이용할 수도 있습니다. loc[ : , 'country']은 모든 행에 대해서 새로운 열 country에 usa라는 값을 넣어달라는 말입니다. 

 

df.loc[:, 'country'] = 'usa'
df

"""
	name	age	height	sex	country
0	KIM	24.0	178	M	usa
1	LEE	32.0	168	F	usa
2	SMITH	43.0	171	F	usa
3	BROWN	24.0	185	M	usa
4	MILLER	NaN	176	F	usa
"""

 

만약 실수로 df.loc['country'] 처럼 입력한다면 새로운 index 이름이 country인 행이 생기게 됩니다.

 

컬럼 이름 바꾸기

데이터프레임의 columns라는 속성을 이용하면 손쉽게 이름을 바꿀 수 있습니다. columns에 원하는 이름이 담긴 리스트를 집어넣습니다. 단 컬럼의 개수와 리스트 내 요소의 개수가 같아야 합니다.

 

df.columns = ['NAME', 'AGE', 'HEIGHT', 'SEX', 'COUNTRY']
df

"""
	NAME	AGE	HEIGHT	SEX	COUNTRY
0	KIM	24.0	178	M	usa
1	LEE	32.0	168	F	usa
2	SMITH	43.0	171	F	usa
3	BROWN	24.0	185	M	usa
4	MILLER	NaN	176	F	usa
"""

 

하지만 항상 모든 컬럼의 이름을 바꿔야 하는 것은 아닙니다. 한 두 개만 바꿔야 한다면 다음과 rename 함수를 이용할 수 있습니다. index를 변경할 것인지 columns를 변경할 것인지 정한 다음, 이름을 바꾸고자 하는 대상의 "현재 이름", "새 이름"을 집어넣습니다.

 

df = df.rename(columns={'NAME': 'name', 'AGE': 'age'})
df

"""
	name	age	HEIGHT	SEX	COUNTRY
0	KIM	24.0	178	M	usa
1	LEE	32.0	168	F	usa
2	SMITH	43.0	171	F	usa
3	BROWN	24.0	185	M	usa
4	MILLER	NaN	176	F	usa
"""

 

 

- 이 글은 아나콘다(Anaconda3)가 설치된  주피터 노트북에서 작성되었습니다.