[Pandas] DataFrame 합치기(Merge)

반응형
    반응형

    두개 이상의 DataFrame을 합치는 방법에 대해 알아보겠습니다.

    판다스에서는 합치는 메소드로 

    merge(), join(), concat() 등이 있는데 이번 포스팅에서는 merge()에 대해서만 살펴보겠습니다.

     

    DataFrame 두개를 먼저 임의로 만들겠습니다.

    import pandas as pd
    data1 = {'No':[1001,1002,1003,1005,1006],
    		 'Name':['David','Terry','Tim','John','Max'],
             'Department':['Management','Engineer','Engineer','Secretary','Delivery'],
             'Entered Date':['2010-01-03','2000-05-20','2007-07-07','2019-03-13','2015-09-04']}
    df_1 = pd.DataFrame(data1,columns=['No','Name','Department','Entered Date'])
    df_1

    data2 = {'No':[1011,1002,1003,1015,1006],
    		 'Total_Experience':[11,21,14,2,6],
             'Job position':['Manager','Director','Team leader','Staff','Assistant manager']}
    df_2 = pd.DataFrame(data2)
    df_2

     

    두개의 DataFrame을 만들고 합쳐보겠습니다.

    합치는 방법에 따라 병합된 DataFrame이 달라지게 됩니다.

    합치는 방법은 크게 4가지입니다.

    • INNER JOIN
    • LEFT JOIN
    • RIGHT JOIN
    • OUTER JOIN

     

    INNER JOIN

    그림으로 보면 교집합에 해당합니다. 

    그래서 두 데이터에 모두 있는 포함하는 값만 가져올 때 사용합니다.

    어떤 column을 기준으로 할지 정해줘야 하는데요. 저는 No 를 기준으로 하겠습니다.

    파라미터에 left_on='No',right_on='No', how= 'inner' 를 넣어줍니다.

    df_inner = pd.merge(df_1,df_2,left_on = 'No',right_on='No',how='inner')
    df_inner

    No에서 중복되는 값만 가지고 오는 것을 볼 수 있습니다.

     

    LEFT JOIN

    LEFT JOIN은 왼쪽 column을 기준으로 합쳐지게 됩니다. 

     

    마찬가지로 파라미터에 left_on='No', right_on='No'을 작성하고 how='left'로 합니다.

    df_left = pd.merge(df_1,df_2,left_on='No',right_on='No',how='left')
    df_left
    

    LEFT로 맞추었더지 df_1의 No를 기준으로 합쳐졌습니다.

    df_2에 없는 값은 모두 NaN 처리가 되었습니다.

     

    RIGHT JOIN

    이번엔 오른쪽을 기준으로 해보겠습니다.

     

    df_right = pd.merge(df_1,df_2,left_on='No',right_on='No',how='right')
    df_right

    df_2의 No 를 기준으로 합쳐졌습니다.

    df_2에는 Name, Department, Entered Date 가 없으므로 모두 NaN처리가 되었습니다.

     

    OUTER JOIN

    이번엔 모두가 기준이 되는 경우입니다. 값이 중복되는것 상관없이 모두가 기준이 됩니다.

    그래도 중복된 값들은 한번만 써집니다.

    df_outer = pd.merge(df_1,df_2,left_on='No',right_on='No',how='outer')
    df_outer

    없는 값은 NaN으로 남기고 모두 합쳐지는 걸 볼 수 있습니다.

     

     

    이렇게 4가지 방법으로 merge를 사용할 수 있습니다. 집합의 원리로 합쳐지니 금방 이해할 수 있을겁니다.

    이상으로 포스팅을 마치겠습니다.

    댓글

    Designed by JB FACTORY

    ....