Skip to content

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가 가능하여 데이터 탐색 속도를 극적으로 높입니다.

👉 PyGWalker GitHub (opens in a new tab)

PyGWalker for Data visualization (opens in a new tab)


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)

  1. DataFrame에서 열을 삭제하는 가장 좋은 방법은?df.drop(columns=['col']) 방식이 가장 현대적이고 안전합니다.

  2. 여러 열을 동시에 삭제할 수 있나요? → 가능합니다. df.drop(columns=['col1', 'col2']) 처럼 리스트로 전달하세요.

  3. 조건에 따라 열을 자동으로 삭제할 수 있나요? → 네, dropna(how='all', axis=1) 또는 df.loc[:, df.notna().any()] 등 조건 필터링을 사용하면 됩니다.