판다스를 사용하다 보면 생각보다 자주 필요한 기능이 칼럼의 순서를 바꾸고, 새 컬럼을 추가하고, 이름을 변경하는 것입니다. 사용법이 어려운 기능들은 아니지만 아직 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)가 설치된 주피터 노트북에서 작성되었습니다.