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

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']]

     

    반응형

    댓글