{"id":8255,"date":"2019-10-10T22:27:34","date_gmt":"2019-10-10T13:27:34","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=8255"},"modified":"2020-05-28T10:12:40","modified_gmt":"2020-05-28T01:12:40","slug":"pandas%ec%9d%98-dataframe%ec%97%90-%eb%8c%80%ed%95%9c-inner-join-outer-join-left-join-right-join","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=8255","title":{"rendered":"pandas\uc758 DataFrame\uc5d0 \ub300\ud55c Inner Join, Outer Join, Left Join, Right Join"},"content":{"rendered":"<p>\ud310\ub2e4\uc2a4\uc5d0\uc11c \ub370\uc774\ud130\ud504\ub808\uc784\uc740 \ud14c\uc774\ube14 \ud615\uc2dd\uc758 \ub370\uc774\ud130\uc14b\uc785\ub2c8\ub2e4. DBMS\uc758 Table\ub4e4 \uac04\uc5d0\ub3c4 Join\uc744 \ub9fa\uc744 \uc218 \uc788\ub4ef\uc774, \ub9c8\ucc2c\uac00\uc9c0\ub85c \ud310\ub2e4\uc2a4\uc758 \ub370\uc774\ud130\ud504\ub808\uc784\ub4e4 \uac04\uc5d0\ub3c4 Join\uc744 \ub9fa\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubb3c\ub860 Join\uc744 \ub9fa\uc744 \uacf5\ud1b5 \ud544\ub4dc\uac00 \uc874\uc7ac\ud55c\ub2e4\uba74 \ub9d0\uc785\ub2c8\ub2e4.<\/p>\n<p>Join\uc5d0\ub294 \ubaa8\ub450 4\uac00\uc9c0 \ubc29\uc2dd\uc774 \uc874\uc7ac\ud569\ub2c8\ub2e4. \uc989, \ub450 \ub370\uc774\ud130\uc14b \uac04\uc758 \uc911\ubcf5\ub41c \uc694\uc18c\ub9cc\uc744 Join\ud558\ub294 Inner Join\uacfc \ub450 \ub370\uc774\ud130\uc14b\uc5d0 \ub300\ud55c \ubaa8\ub4e0 \ub370\uc774\ud130\ub97c Join\ud558\ub294 Outter Join, \uadf8\ub9ac\uace0 \uc67c\ucabd \ub370\uc774\ud130\uc14b\uc744 \uae30\uc900\uc73c\ub85c \ud558\ub294 Left Join\uacfc \uc624\ub978\ucabd \ub370\uc774\ud130\uc14b\uc744 \uae30\uc900\uc73c\ub85c \ud558\ub294 Right Join\uc785\ub2c8\ub2e4. \ubcf4\ub2e4 \uba85\ud655\ud55c Join\uc758 \ud30c\uc545\uc740 \uc544\ub798\uc758 \ucf54\ub4dc \uc608\uc81c\ub97c \ud1b5\ud574 \ud30c\uc545\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uba3c\uc800 Join \ud558\uace0\uc790 \ud558\ub294 \ub370\uc774\ud130\uc14b\uc73c\ub85c, \ud310\ub2e4\uc2a4\uc758 \ub370\uc774\ud130\ud504\ub808\uc784\uc744 \uc544\ub798 \ucf54\ub4dc\ucc98\ub7fc \uc815\uc758\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport pandas as pd\r\n\r\ndata_A = {'key': [1,2,3], 'name': ['Jane', 'John', 'Peter']}\r\ndataframe_A = pd.DataFrame(data_A, columns = ['key', 'name'])\r\n\r\ndata_B = {'key': [2,3,4], 'age': [18, 15, 20]}\r\ndataframe_B = pd.DataFrame(data_B, columns = ['key', 'age'])\r\n\r\nprint(dataframe_A)\r\nprint(dataframe_B)\r\n<\/pre>\n<p>\uacb0\uacfc\ub294 \uc544\ub798\uc640 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\n   key   name\r\n0    1   Jane\r\n1    2   John\r\n2    3  Peter\r\n   key  age\r\n0    2   18\r\n1    3   15\r\n2    4   20<\/pre>\n<p>\ub450 \ub370\uc774\ud130\ud504\ub808\uc784 \uac04\uc5d0\ub294 key\ub77c\ub294 \uacf5\ud1b5 \ud544\ub4dc\uac00 \uc874\uc7ac\ud558\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub97c \ud1a0\ub300\ub85c \uba3c\uc800 Inner Join\uc5d0 \ub300\ud55c \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\ndf_INNER_JOIN = pd.merge(dataframe_A, dataframe_B, left_on='key', right_on='key', how='inner')\r\nprint(df_INNER_JOIN)\r\n<\/pre>\n<p>\uc704\uc758 \ucf54\ub4dc\uc758 \uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"none\">\r\n   key   name  age\r\n0    2   John   18\r\n1    3  Peter   15\r\n<\/pre>\n<p>\ub2e4\uc74c\uc740 Outer Join\uc5d0 \ub300\ud55c \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\ndf_OUTER_JOIN = pd.merge(dataframe_A, dataframe_B, left_on='key', right_on='key', how='outer')\r\nprint(df_OUTER_JOIN)\r\n<\/pre>\n<p>\uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\n   key   name   age\r\n0    1   Jane   NaN\r\n1    2   John  18.0\r\n2    3  Peter  15.0\r\n3    4    NaN  20.0\r\n<\/pre>\n<p>\ub2e4\uc74c\uc740 Left Join\uc5d0 \ub300\ud55c \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\ndf_LEFT_JOIN = pd.merge(dataframe_A, dataframe_B, left_on='key', right_on='key', how='left')\r\nprint(df_LEFT_JOIN)\r\n<\/pre>\n<p>\uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\n   key   name   age\r\n0    1   Jane   NaN\r\n1    2   John  18.0\r\n2    3  Peter  15.0\r\n<\/pre>\n<p>\ub2e4\uc74c\uc740 Right Join\uc5d0 \ub300\ud55c \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\ndf_RIGHT_JOIN = pd.merge(dataframe_A, dataframe_B, left_on='key', right_on='key', how='right')\r\nprint(df_RIGHT_JOIN)\r\n<\/pre>\n<p>\ub2e4\uc74c\uc740 \uc2e4\ud589 \uacb0\uacfc\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\n   key   name  age\r\n0    2   John   18\r\n1    3  Peter   15\r\n2    4    NaN   20\r\n<\/pre>\n<p>\ubaa8\ub4e0 Join\uc740 pd.merge \ud568\uc218\ub97c \ud1b5\ud574 \uc774\ub8e8\uc5b4\uc9c0\ub294\ub370\uc694. \uc704\uc758 \uc608\uc81c \ucf54\ub4dc\ub97c \ubcf4\uba74 \ub450 \ub370\uc774\ud130\ud504\ub808\uc784\uc758 Join \ud544\ub4dc\uac00 \ubaa8\ub450 &#8216;key&#8217;\ub77c\ub294 \uac83\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ucc98\ub7fc Join \ud544\ub4dc\uc758 \uc774\ub984\uc774 \ub3d9\uc77c\ud560 \uacbd\uc6b0 pd.merge\uc758 left_on\uacfc right_on \uc778\uc790 \ub300\uc2e0 on \uc778\uc790 \ud558\ub098\ub85c \ub300\uccb4\uac00 \uac00\ub2a5\ud569\ub2c8\ub2e4. \uc608\ub97c\ub4e4\uc5b4, Inner Join\uc758 \uacbd\uc6b0\ub294 \uc544\ub798\uc640 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\ndf_INNER_JOIN = pd.merge(dataframe_A, dataframe_B, on='key')\r\n<\/pre>\n<p>pd.merge \ud568\uc218\uc758 \uc778\uc790\uc911 how\ub3c4 \uc0dd\ub7b5\ub418\uc5c8\ub294\ub370, \uc774\ub294 Inner Join\uc774 pd.merge\uc758 \uc778\uc790 how\uc758 \uae30\ubcf8\uac12\uc774\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud310\ub2e4\uc2a4\uc5d0\uc11c \ub370\uc774\ud130\ud504\ub808\uc784\uc740 \ud14c\uc774\ube14 \ud615\uc2dd\uc758 \ub370\uc774\ud130\uc14b\uc785\ub2c8\ub2e4. DBMS\uc758 Table\ub4e4 \uac04\uc5d0\ub3c4 Join\uc744 \ub9fa\uc744 \uc218 \uc788\ub4ef\uc774, \ub9c8\ucc2c\uac00\uc9c0\ub85c \ud310\ub2e4\uc2a4\uc758 \ub370\uc774\ud130\ud504\ub808\uc784\ub4e4 \uac04\uc5d0\ub3c4 Join\uc744 \ub9fa\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubb3c\ub860 Join\uc744 \ub9fa\uc744 \uacf5\ud1b5 \ud544\ub4dc\uac00 \uc874\uc7ac\ud55c\ub2e4\uba74 \ub9d0\uc785\ub2c8\ub2e4. Join\uc5d0\ub294 \ubaa8\ub450 4\uac00\uc9c0 \ubc29\uc2dd\uc774 \uc874\uc7ac\ud569\ub2c8\ub2e4. \uc989, \ub450 \ub370\uc774\ud130\uc14b \uac04\uc758 \uc911\ubcf5\ub41c \uc694\uc18c\ub9cc\uc744 Join\ud558\ub294 Inner Join\uacfc \ub450 \ub370\uc774\ud130\uc14b\uc5d0 \ub300\ud55c \ubaa8\ub4e0 \ub370\uc774\ud130\ub97c Join\ud558\ub294 Outter Join, \uadf8\ub9ac\uace0 \uc67c\ucabd \ub370\uc774\ud130\uc14b\uc744 \uae30\uc900\uc73c\ub85c \ud558\ub294 Left &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=8255\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;pandas\uc758 DataFrame\uc5d0 \ub300\ud55c Inner Join, Outer Join, Left Join, Right Join&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[131],"tags":[],"class_list":["post-8255","post","type-post","status-publish","format-standard","hentry","category-python"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/8255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8255"}],"version-history":[{"count":7,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/8255\/revisions"}],"predecessor-version":[{"id":8260,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/8255\/revisions\/8260"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8255"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}