Pandas DataFrame에서 열 삭제하는 방법 (2025 최신)
Updated on
데이터 분석 또는 머신러닝 전 단계에서는 필요하지 않은 열을 제거하는 작업이 매우 흔하게 발생합니다.
특히 Pandas 2.x부터 메모리 사용 방식(copy-on-write)과 Arrow 기반 dtype이 도입되면서, 열 삭제는 더 안전하고 명확한 방식이 권장되고 있습니다.
이 문서에서는 다음 내용을 최신 Pandas 스타일로 정리합니다:
drop()으로 열 삭제하기- 여러 열 삭제
- 열 인덱스로 삭제하기
- 조건 기반 열 삭제 (예: NaN-only 열 제거)
- 2025년 기준 Best Practices
💡 코드 없이 DataFrame을 바로 시각화하고 싶다면?
PyGWalker는 Pandas/Polars DataFrame을 Tableau 스타일 UI로 변환하는 오픈소스 라이브러리입니다.
즉시 시각화·EDA가 가능하여 데이터 탐색 속도를 극적으로 높입니다.
Pandas DataFrame 간단 개념 정리
- DataFrame: 행(row)과 열(column)로 구성된 2D 테이블 구조
- Series: DataFrame의 각 열을 구성하는 1D 데이터 구조
- 색인(index) 기반 접근이 빠르고 효율적이며, 다양한 연산이 가능
- Pandas 2.x에서는 Copy-on-Write(CoW) 기능이 도입되어 메모리 효율성이 크게 개선됨
1. drop() 메서드를 사용하여 열 삭제 (가장 권장)
가장 일반적이며 가장 안전한 방식입니다.
import pandas as pd
data = {
'name': ['Alex', 'Bob', 'Clarke', 'David'],
'age': [20, 25, 19, 18],
'city': ['New York', 'Paris', 'London', 'Tokyo']
}
df = pd.DataFrame(data)
# 'city' 열 삭제
df = df.drop(columns=['city'])
print(df)출력:
name age
0 Alex 20
1 Bob 25
2 Clarke 19
3 David 18🔍 Tip: 2025 기준,
axis=1은 여전히 유효하지만,df.drop(columns=[...])방식이 더 명확하고 현대적입니다.
2. 여러 열 삭제하기
리스트로 열 이름을 전달하면 됩니다.
df = df.drop(columns=['city', 'occupation'])3. 열 인덱스(index)로 삭제하기
열 이름을 모를 때 유용합니다.
df = df.drop(columns=[df.columns[2]]) # 3번째 열 삭제4. 조건 기반 열 삭제 (예: 전체가 NaN인 열)
데이터 클렌징에서 자주 사용됩니다.
import numpy as np
data = {
'name': ['Alex', 'Bob', 'Clarke', 'David'],
'age': [20, 25, 19, 18],
'city': [np.nan, np.nan, np.nan, np.nan],
'occupation': ['Engineer', 'Doctor', 'Artist', 'Lawyer']
}
df = pd.DataFrame(data)
# 모든 값이 NaN인 열만 제거
df = df.dropna(axis=1, how='all')
print(df)출력:
name age occupation
0 Alex 20 Engineer
1 Bob 25 Doctor
2 Clarke 19 Artist
3 David 18 Lawyer👍 최신 팁: Pandas 2.x에서는 아래 방식도 자주 사용됩니다.
df = df.loc[:, df.notna().any()]
5. del df['col'] 방식 — 최소 권장 (Deprecated 방향)
del df['city']이 방식도 작동하지만:
- 오류 발생 시 디버깅이 어려움
- 메서드 체이닝과 호환되지 않음
- Pandas 2.x 이후 비권장 방향으로 이동 중
따라서 문서에서는 drop() 사용을 추천합니다.
결론
Pandas에서 열 삭제는 단순하지만, 안전하고 유지보수하기 좋게 구현하는 것이 중요합니다. 2025년 기준 가장 권장되는 방식은 다음과 같습니다:
- ✔
df.drop(columns=[...]) - ✔ 여러 열 삭제 시 리스트 전달
- ✔ 조건 기반 삭제 시
dropna()또는df.notna()활용 - ❌
del df[...]는 가능하면 사용하지 않기
열 삭제 방식만 깔끔히 정리해도 데이터 전처리 워크플로우가 훨씬 명확해집니다.
자주 묻는 질문 (FAQ)
-
DataFrame에서 열을 삭제하는 가장 좋은 방법은? →
df.drop(columns=['col'])방식이 가장 현대적이고 안전합니다. -
여러 열을 동시에 삭제할 수 있나요? → 가능합니다.
df.drop(columns=['col1', 'col2'])처럼 리스트로 전달하세요. -
조건에 따라 열을 자동으로 삭제할 수 있나요? → 네,
dropna(how='all', axis=1)또는df.loc[:, df.notna().any()]등 조건 필터링을 사용하면 됩니다.
