๋ฐ์ดํฐ ํ๋ ์ ๊ฒฐํฉ
1. ์ํ ๊ฒฐํฉ
- pd.concat([df1, df2], axis = 0) : ๋์ผํ column ๊ธฐ์ค์ผ๋ก ์/์๋๋ก ํฉ์น๊ธฐ, ํ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ ํ๋ ์ ๊ฒฐํฉ
import pandas as pd
df1 = pd.DataFrame({'A' : [1, 2, 3], 'B' : [11, 12, 13], 'C' : [21, 22, 23]})
df2 = pd.DataFrame({'A' : [4, 5, 6], 'B' : [14, 15, 16], 'C' : [24, 25, 26]})
pd.concat([df1, df2])
pd.concat([df2, df1])
#index ์ด๊ธฐํ๋ฅผ ์ํด์ ignore_index = True
pd.concat([df1, df2], ignore_index = True
# ํ๋์ ์์๊ฐ ์์์ ๋ ๊ฒฐํฉ ๊ฒฐ๊ณผ ํ์ธ
df1 = pd.DataFrame({'A' : [1, 2, 3], 'B' : [11, 12, 13], 'C' : [21, 22, 23]})
df2 = pd.DataFrame({'B' : [14, 15, 16], 'A' : [4, 5, 6], 'C' : [24, 25, 26]})
df1
df2
pd.concat([df1, df2])
- ํ ๊ธฐ์ค์ผ๋ก ํฉ์ณ์ง ๋ column์ด ์ผ์นํ์ง ์๋ ๊ณณ์ NaN์ผ๋ก ์ฑ์์ง๋ค.
# ์๋ก ๋ค๋ฅธ ํ๋๋ก ๊ตฌ์ฑ๋์ด ์๋ ๋ฐ์ดํฐ ํ๋ ์์ ๊ฒฐํฉ
df1 = pd.DataFrame({'A' : [1, 2, 3], 'B' : [11, 12, 13], 'C' : [21, 22, 23], 'D' : [31, 32, 33]})
df2 = pd.DataFrame({'A' : [3, 4, 5], 'B' : [13, 14, 15], 'C' : [23, 24, 25], 'E' : [41, 42, 43]})
df1
df2
pd.concat([df1, df2])
- pd.concat()ํจ์๋ default๋ก outer๋ฅผ ๊ฐ์ง๋ค
์ด์ด๋ถ์ด๋ ๋ฐฉ์์ join = outer๋ ํฉ์งํฉ, join = inner๋ ๊ต์งํฉ์ ์๋ฏธํ๋ค
#outer๊ฐ default์ด๊ธฐ ๋๋ฌธ์ ์๋ต๊ฐ๋ฅ
pd.concat([df1, df2], join = 'outer')
# join = inner๋ ๊ต์งํฉ, ์ฌ๊ธฐ์์๋ df1, df2๊ฐ ๊ณตํต์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ A, B, C๋ง ๊ฒฐํฉ๋์ด ๋ณด์ฌ์ง
pd.concat([df1, df2], join = 'inner')
2. ์ข์ฐ ๊ฒฐํฉ
1) concat()
- pd.concat([df1, df2], axis = 1) : ์ด ๊ธฐ์ค. ๋ฐ์ดํฐ ํ๋ ์์ด ์ข์ฐ, ์์ผ๋ก ๊ฒฐํฉ
import pandas as pd
df1 = pd.DataFrame({'A' : [1, 2, 3], 'B' : [11, 12, 13], 'C' : [21, 22, 23], 'D' : [31, 32, 33]})
df2 = pd.DataFrame({'E' : [3, 4, 5], 'F' : [13, 14, 15], 'G' : [23, 24, 25], 'H' : [41, 42, 43]})
df1
df2
pd.concat([df1, df2], axis = 1)
-๋ฌธ์ : ๋ค์ ๋ ๋ฐ์ดํฐ ํ๋ ์์ ๊ฒฐํฉํ๊ธฐ
df1 = pd.DataFrame({'ID' : [1, 2, 3], '์ฑ๋ณ' : ['F', 'M', 'F'], '๋์ด' : [20, 30, 40]})
df2 = pd.DataFrame({'ID' : [1, 2, 3], 'ํค' : [160.5, 170.3, 180.1], '๋ชธ๋ฌด๊ฒ' : [45.1, 50.3, 72.1]})
df1
df2
pd.concat([df1, df2], axis = 1)
-๋ฌธ์ : ๋ค์ ๋ ๋ฐ์ดํฐ ํ๋ ์์ ID ๊ธฐ์ค์ผ๋ก ๊ฒฐํฉํ๊ธฐ
df1 = pd.DataFrame({'ID' : [1, 2, 3, 4, 5], '์ฑ๋ณ' : ['F', 'M', 'F', 'M', 'F'], '๋์ด' : [20, 30, 40, 25, 42]})
df2 = pd.DataFrame({'ID' : [3, 4, 5, 6, 7], 'ํค' : [160.5, 170.3, 180.1, 142.3, 153.7], '๋ชธ๋ฌด๊ฒ' : [45.1, 50.3, 72.1, 38, 42]})
df1
df2
pd.concat([df1, df2], axis = 1)
2) merge()
- pd.merge(df_left, df_right, how='inner', on=None) : ๋ ๋ฐ์ดํฐํ๋ ์์ ๊ฐ ๋ฐ์ดํฐ์ ์กด์ฌํ๋ ๊ณ ์ ๊ฐ(key)์ ๊ธฐ์ค์ผ๋ก ๋ณํฉํ ๋ ์ฌ์ฉ. ์๋ฌด ์ต์ ์ ์ ์ฉํ์ง ์์ผ๋ฉด, on=None ์ด๋ฏ๋ก ๋ ๋ฐ์ดํฐ์ ๊ณตํต ์ด ์ด๋ฆ์ ๊ธฐ์ค์ผ๋ก inner(๊ต์งํฉ)์กฐ์ธ์ ํ๊ฒ ๋จ
df1 = pd.DataFrame({'ID' : [1, 2, 3, 4, 5], '์ฑ๋ณ' : ['F', 'M', 'F', 'M', 'F'], '๋์ด' : [20, 30, 40, 25, 42]})
df2 = pd.DataFrame({'ID' : [3, 4, 5, 6, 7], 'ํค' : [160.5, 170.3, 180.1, 142.3, 153.7], '๋ชธ๋ฌด๊ฒ' : [45.1, 50.3, 72.1, 38, 42]})
df1
df2
-๋ฌธ์ : ์ฑ๋ณ๊ณผ ๋์ด๊ฐ ํ์ธ๋ ์ ์ ๋ค์ ๋์์ผ๋ก ํค์ ๋ชธ๋ฌด๊ฒ์ ์ ๋ณด๋ฅผ ๊ฒฐํฉํ๊ธฐ
# ์ผ์ชฝ์ ์
๋ ฅํ ๋ฐ์ดํฐ ํ๋ ์ ๊ธฐ์ค(how='left')
pd.merge(df1, df2, how = 'left', on = 'ID)
-๋ฌธ์ : ํค์ ๋ชธ๋ฌด๊ฒ๊ฐ ํ์ธ๋ ์ ์ ๋ค์ ๋์์ผ๋ก ์ฑ๋ณ๊ณผ ๋์ด์ ์ ๋ณด๋ฅผ ๊ฒฐํฉํ๊ธฐ
pd.merge(df2, df1, how = 'left', on = 'ID')
๋๋
pd.merge(df1, df2, how = 'right', on = 'ID')
-๋ฌธ์ : ํค, ๋ชธ๋ฌด๊ฒ, ์ฑ๋ณ, ๋์ด ์ ๋ณด๊ฐ ๋ชจ๋ ํ์ธ๋ ์ ์ ๋ค์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๊ธฐ
pd.merge(df1, df2, how = 'inner', on = 'ID')
-๋ฌธ์ : ๋ชจ๋ ์ ์ ๋ค์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๊ธฐ
# outer ์ต์
์ ์ค์ id๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ์น๋ฉด ์ด๋ ํ์ชฝ์๋ผ๋ ์๋ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ NaN๊ฐ์ด ์ง์
pd.merge(df1, df2, how = 'outer', on = 'ID')
-๋ฌธ์ : ๋ชจ๋ ์ ์ ๋ค์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๊ธฐ
df1 = pd.DataFrame({'USER_ID' : [1, 2, 3, 4, 5], '์ฑ๋ณ' : ['F', 'M', 'F', 'M', 'F'], '๋์ด' : [20, 30, 40, 25, 42]})
df2 = pd.DataFrame({'ID' : [3, 4, 5, 6, 7], 'ํค' : [160.5, 170.3, 180.1, 142.3, 153.7], '๋ชธ๋ฌด๊ฒ' : [45.1, 50.3, 72.1, 38, 42]})
pd.merge(df1, df2, how = 'outer', left_on = 'USER_ID', right_on = 'ID')
-๋ฌธ์ : df1 ์ ํ์์ ์ ๋ณด๋ฅผ ์ ์ฅํ ๋ฐ์ดํฐ ํ๋ ์์ด๋ฉฐ, df2 ๋ ๊ฐ ํ์์ ๊ตฌ๋งค ๋ด์ญ์ ์ ์ฅํ ๋ฐ์ดํฐ ํ๋ ์์ด๋ค. ๊ฐ ํ์์ ์ ๋ณด์ ๊ตฌ๋งค ๋ด์ญ์ ์ทจํฉํ์ฌ ํ๋์ ๋ฐ์ดํฐ ํ๋ ์์ผ๋ก ๋ง๋ค๊ธฐ
df1 = pd.DataFrame({'ID' : [1, 2, 3, 4, 5], '๊ฐ์
์ผ' : ['2021-01-02', '2021-01-04', '2021-01-10', '2021-02-10', '2021-02-24'], '์ฑ๋ณ' : ['F', 'M', 'F', 'M', 'M']})
df2 = pd.DataFrame({'๊ตฌ๋งค์์' : [1, 2, 3, 4, 5], 'ID' : [1, 1, 2, 4, 1], '๊ตฌ๋งค์' : [1, 1, 2, 2, 3], '๊ธ์ก' : [1000, 1500, 2000, 3000, 4000]})
df1
df2
pd.merge(df1, df2, how = 'left', on = 'ID')
๋๊ธ