[Pandas]데이터프레임 합치기(join)

반응형
    반응형

    join() 함수를이용한 데이터프레임 합치기입니다.

    join()은 인덱스를 기준으로 왼쪽으로 순차적으로 연결되는 방식입니다.

    어떤 인덱스를 기준으로 하느냐에 따라 배열이 달라집니다.

     

    df1= pd.DataFrame({'A':[10,20,30,40]},index=['a','b','c','d'])
    df2 = pd.DataFrame({'B':[15,25,35,45]},index=['b','c','g','f'])

    예를 위해 df1과 df2의 인덱스 중 2개만 같게 했습니다. b,c가 같습니다.

     

     

    df1.join(df2)

    먼저 df1으로 join을 하면 df1의 인덱스를 따라서 df2가 붙여지게 됩니다.

    df2의 b,c 값은 나오고 나머지 값은 NaN로 나오게 됩니다. 

     

    df2.join(df1)

    df2를 기준으로 하면 B는 다 나오고 df1의 column인 A 에서 b,c 인덱스에 따른 값만 나오게 됩니다.

     

     

    how 파라미터

    인덱스는 how라는 join()의 파라미터값이 left로 디폴트 되어있기 때문에

    따로 입력을 해주지 않으면 자동으로 기준이 기존에 있는 값의 인덱스로 됩니다. 

    즉, A.join(B)에서 A의 인덱스를 따르게 됩니다.

    인덱스를 how 파라미터를 사용하면 바꿀수 있는데

    how 는 {'left', 'right', 'inner', 'outer'} 중 하나를 선택할 수 있습니다.

    앞서 말한대로 'left'가 디폴트 값으로 되어 있어서 아무 요청이 없다면 left로 설정이 됩니다.

     

    right

    A.join(B)에서 B의 인덱스로 설정하고 싶다면 how='right'을 입력해줍니다.

    how를 써서 column의 순서를 원하는대로 할 수 있습니다.

     

    df1.join(df2,how='right')

    df2.join(df1)에서 A,B 위치만 바뀌고 같게 됩니다.

     

     

    inner

    inner는 교집합과 같습니다. 인덱스가 공통적으로 있는 값을 가져오라는 요청입니다.

     

    df1.join(df2,how='inner')

     

    outer

    outer는 합집합과 같습니다. 모든 인덱스 값을 가져옵니다.

    df1.join(df2,how='outer')

     

    merge는 내가 원하는 column을 기준으로 합칠 수 있지만 하나하나 설정을 해줘야 하는 부분이 있고

    join은 인덱스의 기준을 움직여서 인덱스 설정이 잘 되어있다면 한결 편하게 작업을 할 수 있을 것 같습니다.

     

     

    관련 포스팅

    [Python/Pandas] - [Pandas] 데이터프레임 합치기(append,concat)

    [Python/Pandas] - [Pandas] DataFrame 합치기(Merge)

    댓글

    Designed by JB FACTORY

    ....