1. pandas.concat() 함수 사용법
pandas.concat()은 각기 다른 데이터프레임들을 하나로 합치는 함수입니다. 이 때, 기본적으로는 행 방향으로 합치며 (axis=0), 열 방향으로 합치려면 axis=1을 설정해주면 됩니다. 아래 코드에서 pd.concat([df1, df2])을 통해 df1과 df2를 행 방향으로 합칩니다.
import pandas as pd
# 예제 데이터프레임 생성
df1 = pd.DataFrame({
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']
}, index=[0, 1, 2, 3])
df2 = pd.DataFrame({
'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7'],
'C': ['C4', 'C5', 'C6', 'C7'],
'D': ['D4', 'D5', 'D6', 'D7']
}, index=[4, 5, 6, 7])
# pandas.concat() 사용
result = pd.concat([df1, df2])
print(result)
pd.concat() 함수의 주요 매개 변수들은 다음과 같습니다.
- objs : 이 매개 변수는 합치려는 pandas 데이터프레임들의 리스트를 받습니다.
- axis : 이 매개 변수는 연결 방향을 지정합니다. 0은 행 방향(기본값), 1은 열 방향입니다.
- join : 이 매개 변수는 'inner'(두 데이터프레임의 공통 열만 보존)와 'outer'(두 데이터프레임의 모든 열을 보존, 기본값) 중 하나를 선택할 수 있게 합니다.
- ignore_index : 이 매개 변수가 True로 설정되면, 합친 후의 데이터프레임에서 기존 인덱스는 무시되고 새로운 인덱스가 부여됩니다. 기본값은 False입니다.
import pandas as pd
# 예제 데이터프레임 생성
df1 = pd.DataFrame({
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']
}, index=[0, 1, 2, 3])
df2 = pd.DataFrame({
'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7'],
'E': ['E4', 'E5', 'E6', 'E7'],
'F': ['F4', 'F5', 'F6', 'F7']
}, index=[4, 5, 6, 7])
# pandas.concat() 사용 - axis=0, join='outer', ignore_index=False
result = pd.concat([df1, df2])
print(result)
# A B C D E F
# 0 A0 B0 C0 D0 NaN NaN
# 1 A1 B1 C1 D1 NaN NaN
# 2 A2 B2 C2 D2 NaN NaN
# 3 A3 B3 C3 D3 NaN NaN
# 4 A4 B4 NaN NaN E4 F4
# 5 A5 B5 NaN NaN E5 F5
# 6 A6 B6 NaN NaN E6 F6
# 7 A7 B7 NaN NaN E7 F7
# pandas.concat() 사용 - axis=1
result = pd.concat([df1, df2], axis=1)
print(result)
# A B C D A B E F
# 0 A0 B0 C0 D0 NaN NaN NaN NaN
# 1 A1 B1 C1 D1 NaN NaN NaN NaN
# 2 A2 B2 C2 D2 NaN NaN NaN NaN
# 3 A3 B3 C3 D3 NaN NaN NaN NaN
# 4 NaN NaN NaN NaN A4 B4 E4 F4
# 5 NaN NaN NaN NaN A5 B5 E5 F5
# 6 NaN NaN NaN NaN A6 B6 E6 F6
# 7 NaN NaN NaN NaN A7 B7 E7 F7
# pandas.concat() 사용 - join='inner'
result = pd.concat([df1, df2], join='inner')
print(result)
# A B
# 0 A0 B0
# 1 A1 B1
# 2 A2 B2
# 3 A3 B3
# 4 A4 B4
# 5 A5 B5
# 6 A6 B6
# 7 A7 B7
# pandas.concat() 사용 - ignore_index=True
result = pd.concat([df1, df2], ignore_index=True)
print(result)
# A B C D E F
# 0 A0 B0 C0 D0 NaN NaN
# 1 A1 B1 C1 D1 NaN NaN
# 2 A2 B2 C2 D2 NaN NaN
# 3 A3 B3 C3 D3 NaN NaN
# 4 A4 B4 NaN NaN E4 F4
# 5 A5 B5 NaN NaN E5 F5
# 6 A6 B6 NaN NaN E6 F6
# 7 A7 B7 NaN NaN E7 F7
2. pandas.merge() 함수 사용법
pandas.merge()는 두 데이터프레임의 공통 열 혹은 인덱스를 기준으로 두 개의 테이블을 합칩니다. 이 때, on 파라미터를 사용해 기준이 되는 열을 지정할 수 있습니다. 아래 코드에서 pd.merge(df1, df2, on='key')를 통해 key 열을 기준으로 df1과 df2를 합칩니다.
# 예제 데이터프레임 생성
df1 = pd.DataFrame({
'key': ['A', 'B', 'C', 'D'],
'value': range(4)
})
df2 = pd.DataFrame({
'key': ['B', 'D', 'D', 'E'],
'value': range(4, 8)
})
# pandas.merge() 사용
merged = pd.merge(df1, df2, on='key')
print(merged)
pandas.merge() 함수의 주요 매개 변수들은 다음과 같습니다.
- left, right : 이 매개 변수들은 병합하려는 두 데이터프레임을 나타냅니다.
- on : 이 매개 변수는 병합의 기준이 되는 열의 이름을 나타냅니다.
- how : 이 매개 변수는 병합 방식을 나타냅니다. 기본값은 'inner'이며, 'outer', 'left', 'right'를 선택할 수 있습니다.
- suffixes : 이 매개 변수는 중복된 열 이름에 대해 접미사를 추가합니다. 기본값은 ('_x', '_y')입니다.
import pandas as pd
# 예제 데이터프레임 생성
df1 = pd.DataFrame({
'key': ['A', 'B', 'C', 'D'],
'value': range(4)
})
df2 = pd.DataFrame({
'key': ['B', 'D', 'D', 'E'],
'value': range(4, 8)
})
# pandas.merge() 사용
merged = pd.merge(df1, df2, on='key')
print(merged)
# key value_x value_y
# 0 B 1 4
# 1 D 3 5
# 2 D 3 6
# pandas.merge() 사용 - how='outer'
merged = pd.merge(df1, df2, on='key', how='outer')
print(merged)
# key value_x value_y
# 0 A 0.0 NaN
# 1 B 1.0 4.0
# 2 C 2.0 NaN
# 3 D 3.0 5.0
# 4 D 3.0 6.0
# 5 E NaN 7.0
# pandas.merge() 사용 - how='left'
merged = pd.merge(df1, df2, on='key', how='left')
print(merged)
# key value_x value_y
# 0 A 0 NaN
# 1 B 1 4.0
# 2 C 2 NaN
# 3 D 3 5.0
# 4 D 3 6.0
# pandas.merge() 사용 - suffixes
merged = pd.merge(df1, df2, on='key', suffixes=('_left', '_right'))
print(merged)
# key value_left value_right
# 0 B 1 4
# 1 D 3 5
# 2 D 3 6
3. pandas.DataFrame.join() 함수 사용법
join() 메서드는 두 데이터프레임의 인덱스를 기준으로 합치는 방법입니다. merge()와 달리 기본적으로 인덱스를 사용하며, on 파라미터를 통해 다른 열을 기준으로 합칠 수 있습니다. 아래 코드에서 df1.join(df2)를 통해 df1과 df2의 인덱스를 기준으로 데이터프레임을 합칩니다. join() 메서드 역시 how 파라미터를 통해 join 방식을 선택할 수 있습니다.
# 예제 데이터프레임 생성
df1 = pd.DataFrame({
'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']
}, index=['K0', 'K1', 'K2'])
df2 = pd.DataFrame({
'C': ['C0', 'C2', 'C3'],
'D': ['D0', 'D2', 'D3']
}, index=['K0', 'K2', 'K3'])
# pandas.DataFrame.join() 사용
joined = df1.join(df2)
print(joined)
pandas.DataFrame.join() 함수의 주요 매개 변수들은 다음과 같습니다.
- other : 이 매개 변수는 조인하려는 다른 데이터프레임을 나타냅니다.
- on : 이 매개 변수는 호출 데이터프레임의 열 또는 인덱스를 기준으로 결합합니다. other의 인덱스와 일치해야 합니다.
- how : 이 매개 변수는 조인 방식을 나타냅니다. 기본값은 'left'이며, 'outer', 'inner', 'right'를 선택할 수 있습니다.
- lsuffix, rsuffix: 이 매개 변수들은 중복된 열 이름에 대해 접미사를 추가합니다.
import pandas as pd
# 예제 데이터프레임 생성
df1 = pd.DataFrame({
'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']
}, index=['K0', 'K1', 'K2'])
df2 = pd.DataFrame({
'C': ['C0', 'C2', 'C3'],
'D': ['D0', 'D2', 'D3']
}, index=['K0', 'K2', 'K3'])
# DataFrame.join() 사용
joined = df1.join(df2)
print(joined)
# A B C D
# K0 A0 B0 C0 D0
# K1 A1 B1 NaN NaN
# K2 A2 B2 C2 D2
# DataFrame.join() 사용 - how='outer'
joined = df1.join(df2, how='outer')
print(joined)
# A B C D
# K0 A0 B0 C0 D0
# K1 A1 B1 NaN NaN
# K2 A2 B2 C2 D2
# K3 NaN NaN C3 D3
df3 = pd.DataFrame({
'A': ['A3', 'A4', 'A5'],
'B': ['B3', 'B4', 'B5']
}, index=['K0', 'K1', 'K2'])
# DataFrame.join() 사용 - lsuffix, rsuffix
joined = df1.join(df3, lsuffix='_df1', rsuffix='_df3')
print(joined)
# A_df1 B_df1 A_df3 B_df3
# K0 A0 B0 A3 B3
# K1 A1 B1 A4 B4
# K2 A2 B2 A5 B5