Python/Pandas

[Pandas] 파이썬 데이터프레임 행 삭제, 열 삭제(drop 함수)

jimmy_AI 2022. 1. 10. 14:17
반응형

파이썬 판다스 행, 열 삭제 함수 : drop

파이썬에서 데이터프레임을 다룰 때, 원하는 행이나 열을 쉽게 삭제할 수 있는

drop 함수의 사용법을 살펴보겠습니다.

 

이 글은 판다스의 drop 메소드 공식 document의 내용을 바탕으로 작성되었습니다.

 

데이터프레임 행 삭제 방법

먼저, 아래와 같은 간단한 예시 데이터프레임이 있다고 가정해보겠습니다.

import pandas as pd

a = {'col1' : [1, 3, 5, 7, 9], 'col2' : ['a', 'b', 'c', 'd', 'e'], 'col3' : [10, 9, 8, 7, 6]}
df = pd.DataFrame(a)
print(df)

   col1 col2  col3
0     1    a    10
1     3    b     9
2     5    c     8
3     7    d     7
4     9    e     6

0~4의 인덱스를 가지는 5개의 행과, col1, col2, col3의 3개 열로 이루어진

간단한 데이터프레임 입니다.

 

파이썬 데이터프레임의 행을 삭제하는 방법은 drop 함수의 axis 인자를 0으로 설정하고,

삭제를 원하는 인덱스의 목록을 input으로 넣어주시면 됩니다.

# 0, 3의 인덱스를 가지는 행 삭제
df_1 = df.drop([0, 3], axis = 0)

print(df_1)

   col1 col2  col3
1     3    b     9
2     5    c     8
4     9    e     6

참고로, axis 인자의 기본 값은 0이므로, 행 삭제 시에는 생략해도 무관합니다.

 

 

데이터프레임 열 삭제 방법

반면, 판다스 데이터프레임에서 열을 삭제하는 방법은 axis인자를 1로 설정하고,

삭제하고 싶은 열의 목록을 input으로 넣어주시면 됩니다.

# col2 열 삭제
df_2 = df.drop(['col2'], axis = 1)

print(df_2)

   col1  col3
0     1    10
1     3     9
2     5     8
3     7     7
4     9     6
반응형

멀티 인덱스 행 삭제 방법

심화된 예시로, 행이 멀티 인덱스로 이루어진 경우의 예시도 살펴보겠습니다.

이 경우는 가장 바깥쪽 index부터 level인자로 0, 1, 2, ...로 접근해주시면

해당 위치의 index를 기준으로 목록을 지정하여 행 삭제가 가능합니다.

 

예를 들어, 그룹화 결과로 등장한 2중 인덱스를 가진 데이터프레임을 가정해보겠습니다.

바깥의 class 인덱스는 level = 0이 되는 것이고,

안쪽의 gender 인덱스는 level = 1이 되는 것으로 이해해주시면 됩니다.

 

각 level을 기준으로 drop 메소드를 적용한 결과는 아래와 같습니다.

# class = 1 삭제
df_a = df.drop([1], axis = 0, level = 0)

df_a

level = 0 지정으로 class = 1인 데이터들만 정상적으로 삭제하였습니다.

 

이번에는 level = 1로 지정해보겠습니다.

# gender = m 삭제
df_b = df.drop(['m'], axis = 0, level = 1)

df_b

안쪽 index인 gender를 기준으로 'm'인 데이터들만 삭제가 되었습니다.