반응형

09-04. 행/열 삭제 (drop)

DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

 

개요


drop메서드는 데이터프레임에서 열을 삭제하는 메서드입니다.
pop메서드와는 다르게 원본이 변경되지 않습니다.

 

사용법


기본 사용법
df.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')
labels : 삭제할 레이블명입니다. axis를 지정해주어야합니다.
axis : {0 : index / 1 : columns} labels인수를 사용할경우 지정할 축입니다.
index : 인덱스명을 입력해서 바로 삭제를 할 수 있습니다.
columns : 컬럼명을 입력해서 바로 삭제를 할 수 있습니다.
level : 멀티인덱스의 경우 레벨을 지정해서 진행할 수 있습니다.
inplace : 원본을 변경할지 여부입니다. True일경우 원본이 변경됩니다.
errors : 삭제할 레이블을 찾지 못할경우 오류를 띄울지 여부입니다. ignore할 경우 존재하는 레이블만 삭제됩니다.
※ axis=0 + labels 는 index인수와 역할이 같고 axis=1 + labels는 columns와 역할이 같습니다.

반응형

 

예시


먼저, 아래와 같이 간단한 3x3 객체를 만들어 보겠습니다.

sr = pd.Series([1, 2], index=["col1", "col2"])
deep = sr.copy(deep=True)
shallow = sr.copy(deep=False
print(sr)
>>
col1    1
col2    2
dtype: int64

이제 원본인 sr과 deep copy본인 deep, shallow copy본인 shallow의 요소를 변경하고 다시 출력해보겠습니다.

row = ['row1','row2','row3']
col = ['col1','col2','col3']
data = [[1,2,3],[4,5,6],[7,8,9]]
df = pd.DataFrame(data=data, index=row, columns=col)
print(df)
>>
      col1  col2  col3
row1     1     2     3
row2     4     5     6
row3     7     8     9

labels인수와 axis인수로 삭제
labels인수로 삭제할 레이블명을 지정해주게되면, axis인수를 통해 해당 레이블(축)을 지정해주어야합니다.
row2 를 삭제해보겠습니다.

print(df.drop(labels='row2',axis=0))
>>
      col1  col2  col3
row1     1     2     3
row3     7     8     9

col2를 삭제해보겠습니다.

print(df.drop(labels='col2',axis=1))
>>
      col1  col3
row1     1     3
row2     4     6
row3     7     9


index인수와 columns 인수로 삭제
index인수와 columns인수를 사용하면 labels인수와 axis 사용 없이 삭제가 가능합니다.
index를 사용해서 row3을 삭제해보겠습니다.

print(df.drop(index='row3'))
>>
      col1  col2  col3
row1     1     2     3
row2     4     5     6

columns를 이용해 col3을 삭제해보겠습니다.

print(df.drop(columns='col3'))
>>
      col1  col2
row1     1     2
row2     4     5
row3     7     8


errors인수 예시
삭제하고자하는 레이블이 존재하지 않으면 오류가 발생하게됩니다. errors='ignore'로 설정하면 오류를 발생하지 않습니다.
row3row4를 삭제해보겠습니다.(row4는 존재하지 않음)

print(df.drop(labels=['row3','row4'],errors='raise'))
>>
오류발생
KeyError: "['row4'] not found in axis"

row4가 존재하지 않기 때문에 오류가 발생하였습니다. errors='ignore'로 실행해보겠습니다.

print(df.drop(labels=['row3','row4'],errors='ignore'))
>>
      col1  col2  col3
row1     1     2     3
row2     4     5     6

오류없이 존재하는 row3이 삭제된 것을 확인할 수 있습니다.

inplace인수로 원본 변경
inplace인수는 Pandas객체의 공통사항으로 원본의 변경여부를 의미합니다.
True일 경우 반환값 없이 원본이 변경됩니다.

df.drop(labels=['col1','col2'],axis=1,inplace=True)
print(df)
>>
      col3
row1     3
row2     6
row3     9
반응형

+ 최근 글