본문 바로가기
파이썬/파이썬 궁금증 회고

pandas dataframe 열 사이에 열 추가하기(열 순서 바꾸기)

by davi_kr 2024. 7. 24.
반응형

데이터프레임에 데이터를 다 넣고 보니.. 순서가 꼬일 때가 간혹 있습니다.

이럴 때, 순서를 바꿔야겠다 생각할 수도 있으나, 지우고 새로 추가해야겠다라고 생각할 수도 있습니다.

한두개 열만 조정해도 된다면 insert를 사용하면 편합니다.

 

df.insert(열의 위치(loc), 열 이름(label), 열에 들어갈 값들(values))

import pandas as pd

# 예시 데이터프레임 생성
data = {
    'date': ['2024-07-22', '2024-07-23', '2024-07-24'],
    'value': [10, 20, 30]
}
df_daily = pd.DataFrame(data)

# 'date' 열을 datetime 형식으로 변환
df_daily['date'] = pd.to_datetime(df_daily['date'])

# '주_시작일' 열을 생성하여 해당 주의 월요일 날짜로 변환
df_daily['주_시작일'] = df_daily['date'] - pd.to_timedelta(df_daily['date'].dt.weekday, unit='d')

df_daily

 

옮기기 전

# 두 번째 열에 '주_시작일'을 추가
df_daily.insert(1, '주_시작일', df_daily.pop('주_시작일'))

df_daily

 

옮긴 후

 

열의 위치는 0부터 시작합니다. 그래서 두번째 열에 추가하려면 1이라고 적어야 합니다. 

df_daily.insert(1, '주_시작일', df_daily.pop('주_시작일'))를 해석해보면 

df_daily라는 데이터프레임의 두번째 열에 '주_시작일'이라는 이름의 열을 넣어줘.

해당 열의 값들은 기존에 있던 주_시작일 열을 지우면서 그 안에 있던 데이터를 넣을게라는 의미가 됩니다.

 

기존에 있는 열과 값들을 그대로 사용하고 싶을 때, df.pop('열 이름') 사용하면 되겠습니다.

 

열 위치는 index 번호인데, 이 index 번호는 직접 숫자를 지정하는 것도 방법이지만

index값을 가져오는 방법도 가능합니다.

# 두 번째 열에 '주_시작일'을 추가
df_daily.insert(df_daily.columns.get_loc('value'), '주_시작일', df_daily.pop('주_시작일'))

df_daily

 

이때는 '주_시작일' 열이 'value' 열 앞에 있으면 좋겠다. 이런 식으로 생각하면 편할 것 같습니다. 결과는 아래처럼 똑같습니다.

 

 

열 순서 직접 지정하기

이외에 진짜 심플한 경우에는 열 순서 직접 지정하기가 더 편리하기도 합니다.

아래처럼 열 이름을 담은 리스트의 순서만 바꿔적는겁니다.

df_daily[['date','주_시작일','value']]

 

반응형

댓글