Post

Pandas concat과 merge - 데이터 연결과 병합

Pandas concat과 merge - 데이터 연결과 병합

Pandas concat과 merge - 데이터 연결과 병합

concat() - 데이터 연결

  • concat()은 DataFrame을 연결함.

행 방향으로 연결

  • 기본 값인 axis = 0이 지정되어 있고, 행 방향으로 연결함. 또한, 같은 column을 알아서 찾아서 데이터를 연결

pd.concat([gas1, gas2])

  • 연결시 index가 초기화가 되지 않아 전체 DataFrame의 개수와 index가 맞지 않음

gas = pd.concat([gas1, gas2], ignore_index=True)

  • index를 무시하고 연결

열 방향으로 연결

  • 열 방향으로 연결 가능하며, axis = 1로 지정 pd.concat([gas1, gas2], axis=1

merge() - 병합

  • 서로 다른 구성의 DataFrame이지만, 공통된 key값(컬럼)을 가지고 있다면 병합할 수 있음 ```python df1 = pd.DataFrame({ ‘고객명’: [‘박세리’, ‘이대호’, ‘손흥민’, ‘김연아’, ‘마이클조던’], ‘생년월일’: [‘1980-01-02’, ‘1982-02-22’, ‘1993-06-12’, ‘1988-10-16’, ‘1970-03-03’], ‘성별’: [‘여자’, ‘남자’, ‘남자’, ‘여자’, ‘남자’]})

df2 = pd.DataFrame({ ‘고객명’: [‘김연아’, ‘박세리’, ‘손흥민’, ‘이대호’, ‘타이거우즈’], ‘연봉’: [‘2000원’, ‘3000원’, ‘1500원’, ‘2500원’, ‘3500원’]})

pd.merge(df1, df2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
### 병합하는 방법 4가지
- how 옵션 값을 지정하여 4가지 방식으로 병합을 할 수 있음
- how : {left, right, outer, inner}
- default로 설정된 값은 inner
`pd.merge(df1, df2, how='left')`

### 병합하려는 컬럼의 이름이 다른 경우
```python
df1 = pd.DataFrame({
    '이름': ['박세리', '이대호', '손흥민', '김연아', '마이클조던'],
    '생년월일': ['1980-01-02', '1982-02-22', '1993-06-12', '1988-10-16', '1970-03-03'],
    '성별': ['여자', '남자', '남자', '여자', '남자']})

df2 = pd.DataFrame({
    '고객명': ['김연아', '박세리', '손흥민', '이대호', '타이거우즈'],
    '연봉': ['2000원', '3000원', '1500원', '2500원', '3500원']})

pd.merge(df1, df2, left_on='이름', right_on='고객명')
  • 이름과 고객명 컬럼이 모두 drop되지 않고 살아 있음을 확인할 수 있음.
This post is licensed under CC BY 4.0 by the author.