<aside> ⚠️ 글로 설명하기 어렵고 이해가 안된 부분이 있다. 나중에 DF병합이 필요하면 doc과 예시를 참고해서 적용하자.
</aside>
두 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
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파일을 병합시켜보자

