티스토리
데이터 프레임 특정 열 삭제
파이썬 판다스 데이터 프레임에서 특정 열을 삭제하는 방법은 두 가지가 있습니다.
drop(), del 키를 사용하는 2가지에 대해 알아 보겠습니다.
1. drop() 메서드 사용
파이썬 판다스 데이터 프레임에서 특정 열을 삭제하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 다음과 같습니다.
drop() 메서드는 데이터 프레임에서 행 또는 열을 삭제하는 데 사용됩니다. 열을 삭제하려면 axis=1 매개변수를 설정하고 삭제할 열 이름을 지정해야 합니다.
df = df.drop('열 이름', axis=1)
예시
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
# 'B' 열 삭제
df = df.drop('B', axis=1)
print(df)
# A C
# 0 1 7
# 1 2 8
# 2 3 9
2. del 키워드 사용
del 키워드를 사용하여 데이터 프레임에서 열을 직접 삭제할 수도 있습니다.
del df['열 이름']
예시
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
# 'B' 열 삭제
del df['B']
print(df)
# A C
# 0 1 7
# 1 2 8
# 2 3 9
- 특정 조건에 따라 열 삭제
불리언 인덱싱 또는 loc 인덱서를 사용하여 특정 조건에 따라 열을 삭제할 수 있습니다.
예시
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
# 'B' 열의 값이 5보다 큰 경우 삭제
df = df.drop(df['B'] > 5, axis=1)
print(df)
# A C
# 0 1 7
# 1 2 8
- 여러 열 동시 삭제
drop() 메서드 또는 del 키워드를 사용하여 여러 열을 동시에 삭제할 수 있습니다.
예시
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9], 'D': [10, 11, 12]})
# 'B' 및 'D' 열 삭제
df = df.drop(['B', 'D'], axis=1)
print(df)
# A C
# 0 1 7
# 1 2 8
# 2 3 9
참고:
- inplace=True 옵션을 사용하면 원본 데이터 프레임을 변경할 수 있습니다. 기본적으로 inplace=False이며, 새 데이터 프레임을 반환합니다.
- axis=0 옵션을 사용하면 행을 삭제할 수 있습니다.
df.drop() 사용 시 발생하는 흔한 에러 예시
1. 존재하지 않는 열 삭제 시도
df.drop("존재하지_않는_열", axis=1)
에러 메시지:
KeyError: '존재하지_않는_열'
해결 방법:
- 삭제하려는 열 이름이 정확한지 확인합니다.
- errors='ignore' 옵션을 사용하여 오류를 무시하고 진행할 수 있습니다.
예시:
df.drop("존재하지_않는_열", axis=1, errors='ignore')
2. 축(axis) 값 오류
df.drop("컬럼 이름", axis=2) # axis 값이 잘못됨
에러 메시지:
ValueError: Wrong number of dimensions. Expected 1, got 2.
해결 방법:
- axis 값이 0 또는 1인지 확인합니다.
- 0은 행, 1은 열을 의미합니다.
3. inplace 옵션 오용
df = df.drop("컬럼 이름", axis=1, inplace=True) # inplace 옵션 오용
# df 값이 None으로 변함
해결 방법:
- inplace=True 옵션을 사용하면 원본 데이터 프레임이 변경됩니다.
- 원본 데이터 프레임을 유지하려면 inplace=False를 사용해야 합니다.
4. 복수 열 삭제 시 라벨 오류
df.drop(["컬럼 이름1", "컬럼 이름2"], axis=1) # 라벨 오류
# KeyError: "['컬럼 이름1', '컬럼 이름2'] not found in axis"
해결 방법:
- 삭제하려는 열 이름이 리스트에 정확하게 포함되어 있는지 확인합니다.
- 리스트 대신 튜플을 사용해도 됩니다.
5. MultiIndex 열 삭제 시 오류
df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]}, index=[("a", 1), ("b", 2), ("c", 3)])
df.drop("A", axis=1) # MultiIndex 열 삭제 시 오류
# KeyError: 'A'
해결 방법:
- MultiIndex 열을 삭제하려면 level 옵션을 사용해야 합니다.
예시:
df.drop("A", axis=1, level=0)
df.drop("A", axis=1, level=0) 코드에서 level=0의 의미
df.drop("A", axis=1, level=0) 코드에서 level=0은 MultiIndex의 첫 번째 레벨을 기준으로 삭제하라는 의미입니다.
1. MultiIndex란 무엇인가?
MultiIndex는 Pandas DataFrame에서 행 또는 열 인덱스를 여러 레벨로 구성하는 기능입니다. 각 레벨은 서로 다른 차원을 나타냅니다.
예시:
df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]}, index=[("a", 1), ("b", 2), ("c", 3)])
print(df)
# 출력
# A B
# 0 (a, 1) 1 4
# 1 (b, 2) 2 5
# 2 (c, 3) 3 6
위 예시에서 DataFrame의 인덱스는 ("a", 1), ("b", 2), ("c", 3) 처럼 두 개의 레벨로 구성된 MultiIndex입니다. 첫 번째 레벨은 문자 a, b, c를 나타내고, 두 번째 레벨은 숫자 1, 2, 3을 나타냅니다.
2. level=0 옵션의 역할
df.drop("A", axis=1, level=0) 코드에서 level=0 옵션은 첫 번째 레벨인 문자 a, b, c를 기준으로 "A" 열을 삭제하라는 의미입니다. 즉, "A" 열이 포함된 모든 레벨 1 값이 삭제됩니다.
예시:
df = df.drop("A", axis=1, level=0)
print(df)
# 출력
# B
# 0 (a, 1) 4
# 1 (b, 2) 5
# 2 (c, 3) 6
위 예시에서 "A" 열은 첫 번째 레벨인 문자 a, b, c 모두에서 삭제되었습니다.
3. level 옵션 사용 시 참고 사항
- level 옵션은 MultiIndex를 사용하는 경우에만 사용할 수 있습니다.
- level 옵션은 0부터 시작하며, 각 레벨은 정수 값으로 나타냅니다.
- 여러 레벨을 동시에 삭제하려면 튜플 형태로 레벨 값을 지정할 수 있습니다.
마무리
- 이번 포스팅은 데이터 프레임 열 삭제에 대해 알아봤습니다.
궁금한 사항은 댓글을 통해서 남겨 주시면 답변 드리겠습니다.
감사합니다.
'PYTHON 파이썬 > PANDAS(판다스)' 카테고리의 다른 글
판다스 시작하기: 데이터 분석의 첫걸음 (0) | 2024.01.27 |
---|---|
[PANDAS] 시계열(datetime) 데이터프레임 ,날짜 시간 기준 병합(merge) (2) | 2024.01.27 |
[병합/Merge] 2개의 데이터의 특정 열의 이름과 값이 같은 행 병합 (1) | 2024.01.07 |
[병합/Merge] 열과 행이 다르고, 특정 열의 이름과 값이 같은 다른 데이터프레임 병합 (1) | 2024.01.06 |
[python/pandas] datetime(시계열) 날짜 구간(Range) 추출 (0) | 2023.12.23 |