Today I Learned/Python & Pandas

[Pandas] column 순서 재배치하는 2가지 방법

하나719 2020. 9. 15. 21:18
반응형

데이터 프레임의 컬럼을 요리조리 다뤄보면서 알게 된 컬럼 순서 바꾸는 방법을 TIL로 남기려고 한다.

 

이렇게 컬럼이 많을 때 한눈에 들어오지 않는다.

위 이미지에서 3번째 컬럼에 있는 Salary Estimate 컬럼을 보면 연봉이 string 타입으로 작성되어 있어 연산이 어렵다.

그래서 salary_min, salary_max 컬럼을 생성하여 앞에 숫자와 뒤에 숫자를 각각 넣어주었다.

 

salary_min, salary_max 컬럼인데 아직 column명 변경 전이라 0, 1로 표기되어있다.

컬럼의 맨 오른쪽에 생성되어 있어서 스크롤을 해야 볼 수 있다.

그래서 이 새로만든 컬럼을 앞으로 재배치해주고 싶다.

 

방법1. 컬럼명 직접 써주기

df=df[['Job Title','salary_min', 'salary_max', 'Salary Estimate',
       'Job Description', 'Rating', 'Company Name', 'Location', 'Headquarters',
       'Size', 'Founded', 'Type of ownership', 'Industry', 'Sector', 'Revenue',
       'Competitors', 'Easy Apply']]

원하는 순서에 맞추어서 직접 써주는 방법이다.

이 때 하나하나 작성하기 귀찮으니까

df.columns 

코드를 먼저 쳐서 output으로 나오는 컬럼을 복사해서 쓴다.

방법2. slice 사용하기

1. 앞으로 가져오고 싶은 부분의 컬럼 이름을 리스트 형태로 짤라온다.
2. 뒤에 붙이고 싶은 부분의 컬럼 이름을 리스트 형태로 짤라온다.
3. 각각의 리스트를 순서에 맞게 이어준다. (+연산)
4. 새로운 순서로 df에 넣어준다.

col1=df.columns[-2:].to_list()
col2=df.columns[:-2].to_list()
new_col=col1+col2
df=df[new_col]

예를들어 원래 컬럼 순서가 A,B,C,D,E 였을때 

col1 = df.columns[-2:].to_list() 결과 -> col1 = ['D','E']

col2 = df.columns[:-2].to_list() 결과 -> col2 = ['A','B','C']

new_col =col1 + col2 결과 -> new_col = ['D','E','A','B','C']

df[new_col] = df[['D','E','A','B','C']]

 

만약에 특정 컬럼 몇개만 추출해서 순서를 마음대로 하고싶을 때는 직접 써주는게 편할것 같고,

컬럼명이 길고 복잡하거나 많을 때는 두번째방법을 써주어도 좋을 것 같다!

 

(+) 컬럼명 바꾸고 싶을 때

df.rename(columns={'원래이름1':'바꿀이름1','원래이름2':'바꿀이름2'})
  • rename 함수를 사용하고, 컬럼을 바꿀꺼니까 columns 라고 써주고 위처럼 명시해준다. (index도 바꿀수 있기 때문에, columns라고 써준다.)
df.rename(str.lower, axis='columns')
  • column 이름에 있는 대문자를 일괄적으로 소문자로 바꿔주는것도 가능하다.

 

참고 자료 

 

반응형