MINERVA/Python 2022. 11. 12. 04:38
반응형

행(row)과 열(column) 형태인 datafram을 결합하기 위해서 concat() 함수를 사용합니다.

사용 방법은 매우 직관적이며 아래의 샘플코드를 한번 보시면 고등학생때 수업시간에 배운 집합을 생각하시면 매우 간단합니다.

 

1. 예제1

SampleDf1 = {'A': ['A1', 'A2', 'A3', 'A4'],
             'B': ['B1', 'B2', 'B3', 'B4'],
             'C': ['C1', 'C2', 'C3', 'C4'],
             }

df1 = pd.DataFrame(SampleDf1)
print(df1)


SampleDf2 = {'A': ['A1', 'A2', 'A3', 'A4'],
             'B': ['B1', 'B2', 'B3', 'B4'],
             'C': ['C1', 'C2', 'C3', 'C4'],
             }
df2 = pd.DataFrame(SampleDf2)
print(df2)

(실행결과)

    A   B   C
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3
3  A4  B4  C4
    A   B   C
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3
3  A4  B4  C4

unionDf = pd.concat([df1, df2])

(실행결과)

    A   B   C
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3
3  A4  B4  C4
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3
3  A4  B4  C4

 

unionDf = pd.concat([df1, df2], ignore_index=True)

- 인덱스 새롭게 설정함

(실행결과)    

A   B   C
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3
3  A4  B4  C4
4  A1  B1  C1
5  A2  B2  C2
6  A3  B3  C3
7  A4  B4  C4

unionDf = pd.concat([df1, df2],axis=1) 
print(unionDf)

- 옆으로 데이타를 연결

(실행결과)

    A   B   C   A   B   C
0  A1  B1  C1  A1  B1  C1
1  A2  B2  C2  A2  B2  C2
2  A3  B3  C3  A3  B3  C3
3  A4  B4  C4  A4  B4  C4

 

unionDf = pd.concat([df1,df2],ignore_index=True).drop_duplicates(keep='first')
print(unionDf)

# 중복행 제거: drop_duplicates() 사용

(실행결과)

    A   B   C
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3
3  A4  B4  C4

unionDf = pd.concat([df1,df2],ignore_index=True).drop_duplicates(keep='last')
print(unionDf)

(실행결과)

    A   B   C
4  A1  B1  C1
5  A2  B2  C2
6  A3  B3  C3
7  A4  B4  C4

 

2. 예제2

SampleDf1 = {'A': ['A1', 'A2', 'A3', 'A4'],
             'B': ['B1', 'B2', 'B3', 'B4'],
             'C': ['C1', 'C2', 'C3', 'C4'],
             }

df1 = pd.DataFrame(SampleDf1)
print(df1)

SampleDf2 = {'C': ['C1', 'C2', 'C3', 'C4'],
             'D': ['D1', 'D2', 'D3', 'D4'],
             'E': ['E1', 'E2', 'E3', 'E4'],
             'F': ['F1', 'F2', 'F3', 'F4'],
             }
df2 = pd.DataFrame(SampleDf2)
print(df2)

unionDf = pd.concat([df1, df2])
print(unionDf)

(실행결과)

    A   B   C
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3
3  A4  B4  C4
    C   D   E   F
0  C1  D1  E1  F1
1  C2  D2  E2  F2
2  C3  D3  E3  F3
3  C4  D4  E4  F4
     A    B   C    D    E    F
0   A1   B1  C1  NaN  NaN  NaN
1   A2   B2  C2  NaN  NaN  NaN
2   A3   B3  C3  NaN  NaN  NaN
3   A4   B4  C4  NaN  NaN  NaN
0  NaN  NaN  C1   D1   E1   F1
1  NaN  NaN  C2   D2   E2   F2
2  NaN  NaN  C3   D3   E3   F3
3  NaN  NaN  C4   D4   E4   F4

unionDf = pd.concat([df1, df2], ignore_index=True)
print(unionDf)

(실행결과)

     A    B   C    D    E    F
0   A1   B1  C1  NaN  NaN  NaN
1   A2   B2  C2  NaN  NaN  NaN
2   A3   B3  C3  NaN  NaN  NaN
3   A4   B4  C4  NaN  NaN  NaN
4  NaN  NaN  C1   D1   E1   F1
5  NaN  NaN  C2   D2   E2   F2
6  NaN  NaN  C3   D3   E3   F3
7  NaN  NaN  C4   D4   E4   F4

unionDf = pd.concat([df1, df2],axis=1)
print(unionDf)

(실행결과)

     A     B   C    C     D    E   F
0  A1  B1  C1  C1  D1  E1  F1
1  A2  B2  C2  C2  D2  E2  F2
2  A3  B3  C3  C3  D3  E3  F3
3  A4  B4  C4  C4  D4  E4  F4

 

3.정리

세부적인 설명보다는 샘플코드와 실행결과를 보면 이해가 쉽게 될것으로 생각되어 코드와 실행결과를 남겼습니다.

 

반응형
posted by choiwonwoo
: