DataFrame의 열 순서를 변경하는 메소드는 별도로 없어서 열 순서를 변경하는 방법을 정리해보려 합니다.
1. 열의 순서를 직접적으로 변경
exam_data = {'수학': [90, 80, 70], '영어': [98, 89, 95],
'음악': [11, 22, 33], '체육': [44, 55, 66]}
exam_data = pd.DataFrame(exam_data)
col = ['체육', '수학', '영어', '음악']
exam_data = exam_data[col]
열의 순서를 직접 설정하여 변경하는 방법입니다. 열의 개수가 많지 않으면 사용할 수 있지만 개수가 많아지면 사
용하기 힘들다는 단점이 있습니다.
2. reindex를 이용한 방법
exam_data = {'수학': [90, 80, 70], '영어': [98, 89, 95],
'음악': [11, 22, 33], '체육': [44, 55, 66]}
exam_data = pd.DataFrame(exam_data)
col = ['체육', '수학', '영어', '음악']
exam_data.reindex(columns=col)
첫번째 방법과 거의 동일한데 reindex 메소드를 사용한 방법입니다.
3. 열을 추출한 후 직접 변경
exam_data = {'수학': [90, 80, 70], '영어': [98, 89, 95],
'음악': [11, 22, 33], '체육': [44, 55, 66]}
exam_data = pd.DataFrame(exam_data)
col_list = exam_data.columns.to_list() # 열 -> list
col_list2 = list(exam_data.columns.values) # 열 -> np.ndarray -> list
col = [col[3]] + col[:3]
exam_data = exam_data[col]
- DataFrame.columns.to_list(): 리스트 형태로 반환
- list(DataFrame.columns.values): columns.values는 열을 ndarray형태로 반환합니다. list를 취해 리스트로 변환한 후 사용합니다.
열을 리스트 형태로 추출한 후 슬라이싱 등 가공을 하여 순서를 변경한 후 첫번째 방법과 같이 다시 선언해주는 방법입니다.
4. insert를 이용한 방법
exam_data = {'수학': [90, 80, 70], '영어': [98, 89, 95],
'음악': [11, 22, 33], '체육': [44, 55, 66]}
exam_data = pd.DataFrame(exam_data)
exam_data.insert(0, '체육', exam_data.pop('체육'))
DataFrame.insert를 사용하는 방법입니다. 첫번째 인자로 삽입할 위치를, 두번째 인자로 삽입할 열의 이름을 매개변수로 전달하고 마지막 인자로 DataFrame.pop을 이용해 기존의 인자를 없애주는 방법입니다.
코드가 깔끔하지만 한 개의 열씩 변경할 수 있는 단점이 있습니다.
직접 찾아보기도 하고 Stackoverflow에서도 찾아봤는데, 이외에도 혹시 다른 방법이 있다면 알려주시면 감사하겠습니다 :)
'Python > Syntax' 카테고리의 다른 글
[Pandas] 행 인덱스를 제외하고 DataFrame을 csv 파일로 저장 (1) | 2022.06.08 |
---|---|
[JupyterNoteBook] 다른 주피터 노트북으로 셀을 복사 (0) | 2022.06.08 |
[Python] 문자열 자료형을 datetime, date 자료형으로 변환 (0) | 2022.05.26 |
[Python] 논리 연산자와 Bitwise 연산자 차이점 (0) | 2022.03.16 |
[Python] Bitwise 연산자를 이용한 홀/짝 판단 (0) | 2022.03.16 |