상세 컨텐츠

본문 제목

[Pandas] DataFrame에서 열 삭제 하기

머신러닝 딥러닝/PANDAS

by 힐둔 2021. 8. 3. 20:13

본문

이번에는 DataFrame에서 특정 열을 삭제하는 방법을 알아보자.

삭제할 때에는 drop이라는 API를 사용하면 되고, axis나 clumns, index를 label과 같이 사용하여 삭제 가능하다. axis는 아무것도 입력하지 않았을경우 default 가 0이다. axis를 지정하지 않고, columns이나 index 없이 달랑 label만 입력 한다면 기본적으로 axis=0, 그리니까 index (열) 에서 label을 찾게 된다. 만약 column을 삭제하고 싶다면 axis1로 설정해야 한다. 아니면 찾질 못한다.

또한, 기본적으로 원본 데이터는 삭제되지 않으며 변현된 DataFrame이 copy되어 return 된다. 이는 parameter 중에 하나인 inplace로 control 되며 default 값이 False이므로 가능한 얘기이다. 만약 inplaceTrue로 하게 되면 return 값은 없고, 원본이 수정된다. 아래 사용 예를 보자.

DataFrame의 열 이나 행의 삭제는 drop을 사용한다.

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop.html?highlight=drop#pandas.DataFrame.drop

 

 

 


0 ~ 11까지를 원소로 가지고, columns label이 각각 A,B,C,D인 3 x 4 Matrix를 이용하기로 한다.

numpy의 arange를 이용해서 생성하고, reshape을 이용해서 2차원 행렬로 변환했다. 

import pandas as pd 
import numpy as np 
df = pd.DataFrame(np.arange(12).reshape(3, 4), columns=['A', 'B', 'C', 'D']) 
df

 

아래와 같이 1만 지정하게 되면 어떻게 될까?

df.drop(1)

 

axis가 default 0이므로, 아래 처럼 index 에서 1이라는 행을 찾고 지우게 된다. 만약 index에 없는 label만 넣는다면 어떻게 될까? df.drop('A') 을 입력하면 KeyError: "['A'] not found in axis" 라고 뜨게 된다. df.drop(0,axis=0), df.drop(index=0) df.drop(0)과 같은 말이다. 두개를 삭제하고 싶다면 df.drop([0,1]) 이런식으로 list로 만들어서 삭제 가능하다.

동일한 방법으로 column도 삭제 가능하다. axis를 1로 지정하거나 columns를 이용하면 된다. 마찬가지로 df.drop(columns='A')도 동일하며 여러개를 삭제하고 싶은 경우는 df.drop(columns=['A','B']) 처럼 list로 구성해주면 된다.

 

df.drop('A',axis=1)

 

 

참고 : https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop.html?highlight=drop#pandas.DataFrame.drop

 

pandas.DataFrame.drop — pandas 1.3.1 documentation

pandas.DataFrame. drop DataFrame. drop ( labels = None , axis = 0 , index = None , columns = None , level = None , inplace = False , errors = 'raise' ) [source] Drop specified labels from rows or columns. Remove rows or columns by specifying label names and corresponding axis, or by specifying direc...

pandas.pydata.org

 

관련글 더보기

댓글 영역