<aside> ⚠️ 글로 설명하기 어렵고 이해가 안된 부분이 있다. 나중에 DF병합이 필요하면 doc과 예시를 참고해서 적용하자.

</aside>


concat() : 데이터프레임 연결

두 DF의 행 또는 열의 속성이 같을 경우 기존 DF의 형태를 유지하면서 이어 붙일 수 있다. 이때 사용하는 메서드가 concat이다.

pd.concat( [DF, DF, DF, ...] )

axis옵션으로 위로 붙일지 옆으로 붙일지 결정할 수 있다. default는 axis = 0이고 열을 유지한체 위, 아래로 붙게 된다.

열의 형태를 결정하는 join 옵션이 있다. join = 'outer'의 경우 연결할 DF 열들의 합집합으로 결정되며, join = 'inner'은 DF열들의 교집합으로 결정된다. default는 join = 'outer' 이다.

ignore_index옵션은 기존행을 무시하고 새 인덱스로 설정할 것인지 묻는 옵션이다. default는 ignore_index = False이다.

import pandas as pd

df1 = pd.DataFrame({'a': ['a0', 'a1', 'a2', 'a3'],
                    'b': ['b0', 'b1', 'b2', 'b3'],
                    'c': ['c0', 'c1', 'c2', 'c3']},
                   index=[0, 1, 2, 3])

df2 = pd.DataFrame({'a': ['a2', 'a3', 'a4', 'a5'],
                    'b': ['b2', 'b3', 'b4', 'b5'],
                    'c': ['c2', 'c3', 'c4', 'c5'],
                    'd': ['d2', 'd3', 'd4', 'd5']},
                   index=[2, 3, 4, 5])

print(df1)
print()
print(df2)
print()

result1 = pd.concat([df1, df2])
result2 = pd.concat([df1, df2], ignore_index=True)
result3 = pd.concat([df1, df2], axis=1)
result3_in = pd.concat([df1, df2], axis=1, join='inner')

print("위 아래로 연결")
print(result1)
print()

print("위 아래로 연결, 인덱스 새로 설정")
print(result2)
print()

print("옆으로 연결")
print(result3)
print()

print("옆으로 연결, 중복되는 열만 적용")
print(result3_in)
 
    a   b   c
0  a0  b0  c0
1  a1  b1  c1
2  a2  b2  c2
3  a3  b3  c3

    a   b   c   d
2  a2  b2  c2  d2
3  a3  b3  c3  d3
4  a4  b4  c4  d4
5  a5  b5  c5  d5

위 아래로 연결
    a   b   c    d
0  a0  b0  c0  NaN
1  a1  b1  c1  NaN
2  a2  b2  c2  NaN
3  a3  b3  c3  NaN
2  a2  b2  c2   d2
3  a3  b3  c3   d3
4  a4  b4  c4   d4
5  a5  b5  c5   d5

위 아래로 연결, 인덱스 새로 설정
    a   b   c    d
0  a0  b0  c0  NaN
1  a1  b1  c1  NaN
2  a2  b2  c2  NaN
3  a3  b3  c3  NaN
4  a2  b2  c2   d2
5  a3  b3  c3   d3
6  a4  b4  c4   d4
7  a5  b5  c5   d5

옆으로 연결
     a    b    c    a    b    c    d
0   a0   b0   c0  NaN  NaN  NaN  NaN
1   a1   b1   c1  NaN  NaN  NaN  NaN
2   a2   b2   c2   a2   b2   c2   d2
3   a3   b3   c3   a3   b3   c3   d3
4  NaN  NaN  NaN   a4   b4   c4   d4
5  NaN  NaN  NaN   a5   b5   c5   d5

옆으로 연결, 중복되는 행만 적용
    a   b   c   a   b   c   d
2  a2  b2  c2  a2  b2  c2  d2
3  a3  b3  c3  a3  b3  c3  d3

merge() : 데이터프레임 병합

pandas.merge - pandas 1.2.5 documentation

pandas.DataFrame.merge - pandas 1.2.5 documentation

merge()로 어떤 기준에 의해 두 DF를 병합할 수 있다. 이때 기준이 되는 열이나 인덱스를 key라고 부른다. key가 되는 열이나 인덱스는 반드시 양쪽 DF에 모두 존재해야 한다.

pd.merge ( df1, df2, how = 'inner', on = None )

on옵션은 두 DF가 공통으로 속하는 key를 선택한다. default는 on = None이고 이는 두 DF에 공통으로 속하는 모든 열을 key(기준)으로 병합한다는 뜻이다.

how옵션은 추출방식을 교집합(inner), 합집합(outer)중 선택할 수 있다. default는 how = 'inner'이다.

아래의 두 xlsx파일을 병합시켜보자