pandas를 사용하다 보면 DataFrame에서 불필요한 열(column)을 제거해야 하는 경우가 자주 발생합니다. 이 글에서는 하나의 열을 삭제하는 방법부터 여러 개의 열을 한 번에 삭제하는 방법까지 다양한 방식을 예제와 함께 살펴보겠습니다.
먼저 다음과 같은 DataFrame이 있다고 가정해 보겠습니다.
one two three 0 1 2 3 1 4 5 6
하나의 열('one')을 삭제한 결과는 다음과 같습니다.
two three 0 2 3 1 5 6
두 개 이상의 열('one', 'two')을 삭제한 결과는 다음과 같습니다.
three 0 3 1 6
방법 1: del 키워드 사용
가장 간단한 방법은 파이썬의 del 키워드를 사용하는 것입니다.
- DataFrame을 정의합니다.
- 아래와 같이 특정 열을 삭제합니다.
del df['one']
예제 코드
import pandas as pd
data = [[1,2,3],[4,5,6]]
df = pd.DataFrame(data,columns=('one','two','three'))
print("Before deletion\n", df)
del df['one']
print("After deletion\n", df)실행 결과
Before deletion one two three 0 1 2 3 1 4 5 6 After deletion two three 0 2 3 1 5 6
del은 원본 DataFrame을 직접 수정(in-place)하며, 한 번에 하나의 열만 삭제할 수 있다는 점에 유의하세요.
방법 2: pop() 함수 사용
pop() 함수를 사용하면 열을 삭제하면서 동시에 해당 열의 데이터를 반환받을 수 있습니다.
- DataFrame을 정의합니다.
- 아래와 같이 pop 함수로 특정 열을 삭제합니다.
df.pop('one')예제 코드
import pandas as pd
data = [[1,2,3],[4,5,6]]
df = pd.DataFrame(data,columns=('one','two','three'))
print("Before deletion\n", df)
df.pop('one')
print("After deletion\n", df)실행 결과
Before deletion one two three 0 1 2 3 1 4 5 6 After deletion two three 0 2 3 1 5 6
pop() 역시 원본 DataFrame을 직접 수정하며, 삭제된 열의 Series를 반환한다는 점이 del과의 차이점입니다.
방법 3: drop() 함수로 여러 열 한 번에 삭제
두 개 이상의 열을 삭제할 때는 drop() 함수를 사용하는 것이 가장 효율적입니다. inplace=True 옵션을 지정하면 원본 DataFrame이 직접 수정됩니다.
- DataFrame을 정의합니다.
- 아래와 같이 여러 열을 한 번에 삭제합니다.
df.drop(columns=['one','two'],inplace = True)
예제 코드
import pandas as pd
data = [[1,2,3],[4,5,6]]
df = pd.DataFrame(data,columns=('one','two','three'))
print("Before deletion\n ", df)
df.drop(columns=['one','two'],inplace = True)
print("After deleting two columns\n", df)실행 결과
Before deletion one two three 0 1 2 3 1 4 5 6 After deleting two columns three 0 3 1 6
정리
세 가지 방법을 비교하면 다음과 같습니다.
- del df['열이름']: 단일 열 삭제에 적합하며, 문법이 간단합니다.
- df.pop('열이름'): 열을 삭제하면서 해당 데이터를 변수에 저장해 활용할 수 있습니다.
- df.drop(columns=[...], inplace=True): 여러 열을 한 번에 삭제할 수 있고, 리스트로 열 이름을 전달하므로 유연성이 뛰어납니다.
상황에 맞는 방법을 선택하여 DataFrame의 열을 효율적으로 관리해 보세요.