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'로 설정하면 오류를 발생하지 않습니다.
row3, row4를 삭제해보겠습니다.(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
'파이썬완전정복-Pandas DataFrame > 09. 가공' 카테고리의 다른 글
Pandas DataFrame 09-06. 자르기 (truncate) (0) | 2022.01.23 |
---|---|
Pandas DataFrame 09-05. 행 추가 (append) (0) | 2022.01.23 |
Pandas DataFrame 09-03. 복사 (copy) (0) | 2022.01.23 |
Pandas DataFrame 09-02. 열 꺼내기(pop) (0) | 2022.01.23 |
Pandas DataFrame 09-01. 열 삽입 (insert) (0) | 2022.01.23 |