30대 갓생살기😍

반응형

다중 데이터프레임 컬럼 한번에 삭제하기

 

이번 포스팅은 여러데이터 프레임에서 다중 컬럼을 제거하는 방법에 대해 소개해드리겠습니다.

해결하고자 하는 문제는 아래와 같습니다. 1월부터 12월까지 동일한 구조의 데이터프레임이 있습니다.

하지만 컬럼 중 개인정보 보호를 위하여 주민번호를 다 제거해야되는 상황입니다.

 

 

물론 데이터프레임 하나하나 제거해서 저장할 수도있지만 그렇게 한다면 이 반복을 12번이나해야합니다.

어떻게 하면 간단히 만들 수 있을까요? 

바로 for문을 이용하면 됩니다. 사실 과정을 하나하나 곱씹어보면 엄청 어려운 작업이 아니라는 것을 느낄 수 있습니다.


간단한 실습 (원리이해하기)

data.zip
0.00MB

 

1. 압축을 풀고 데이터를 불러옵니다. 

import pandas as pd 
Jan=pd.read_csv('C:/data/1월.csv',encoding='cp949')
Feb=pd.read_csv('C:/data/2월.csv',encoding='cp949')
Mar=pd.read_csv('C:/data/3월.csv',encoding='cp949')

1.1 데이터프레임 생김새 보기 

 

2. 삭제하고 싶은 행을 가지고 있는 데이터프레임을 리스트로 묶어줍니다.

 

이때 리스트를 묶어준다는것은 [ ] (대괄호) 데이터프레임을 넣어주는 것입니다.

group_list=[Jan,Feb,Mar]

 

3. for문 작성 

for i in range(len(group_list)):
    group_list[i].drop(group_list[i].columns[[1]],axis=1,inplace=True)

(코드설명) 

len(group_list): len함수는 리스트의 원소 개수를 세어주는 역할

현재 group_list에 3개의데이터프레임이 있으므로 len(group_list)를 해주면 3이 나오는 것을 확인할 수 있습니다.

group_list[0] : 첫번째 데이터프레임 (Jan) 

group_list[n] : n번째 데이터프레임 (Feb)

 

drop.group_list[i].columns[[1]] : i번째 데이터프레임에서 1번째 컬럼을 삭제

저희는 현재 주민번호 컬럼을 지우고 싶으므로 2번째 컬럼 즉, 리스트경우 1번공간을 지워줍니다.

그리고 조금 응용을 해보자면 이름과 성별을 지우고싶다면 drop.group_list[i].columns[[0,2]] 를 써주면 됩니다

리스트 생김새 

axis = 0 : 기본값(default)이며 행을 제거 할 때 사용

axis = 1 : 열/컬럼을 제거 할 때 사용

 

inplace=True : (이 예시와 같은 경우) 컬럼을 제거한 후 제거 된 결과의 데이터프레임으로 대체


결과값 확인하기

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading