
Pandas에서 merge()와 concat()은 DataFrame 를 합치는(결합하는) 데 사용되는 방법.
join이라는 용어가 이 두 경우의 동작을 명시하는데 사용된다.
다음 url을 참고하여 inner join, outer join, left join, right join 이 무엇인지 꼭 확인하길 바람.
https://ds31x.tistory.com/179#4%EA%B0%80%EC%A7%80-join
[pandas] merge 예제.
merge와 concat의 차이점:2024.01.12 - [Python] - [pandas] DataFrame 합치기 : concat 과 merge [pandas] DataFrame 합치기 : concat 과 mergePandas에서 merge와 concat은 DataFrame 를 합치는(결합하는) 데 사용되는 방법.merge:SQL join
ds31x.tistory.com
.merge()메서드:
- SQL
join과 유사함. - 두
DataFrame간의 공통column이나index를 기준 column ( on parameter)으로 삼아 결합 inner,outer,left,right등의 다양한 join 타입 을 지원 (howparameter)함.- 때문에 합쳐지는
DataFrame이 다른 columns를 갖는 경우가 많음.
- 때문에 합쳐지는
- 주로 column based conjunction 에 사용됨.
다음의 code snippet을 참고하라 (기본으로 inner join이 사용된다.)
# Load Library
import pandas as pd
# Create DataFrame
student_data = {
'student_id': ['19973037', '20220102', '20232323'],
'grade': ['b', 'a', 'a+']
}
df_st_data = pd.DataFrame(
student_data,
columns=['student_id', 'grade']
)
student_credit = {
'student_id': ['973037', '20220102', '20232323', '771231'],
'credit': ['16', '18', '21', '888']
}
df_st_credit = pd.DataFrame(
student_credit,
columns=['student_id', 'credit']
)
# merge DataFrame
df_ret = pd.merge(
df_st_data,
df_st_credit,
on = 'student_id'
)
df_ret.head(3)

관련된 예제는 다음을 참고할 것.
2024.01.12 - [Python] - [pandas] merge 예제.
[pandas] merge 예제.
merge는 특정 column을 기준으로 하는 결합이 필요한 경우 이용됨. 이 경우 사용되는 column은 on parameter를 통해 지정한다. # merge DataFrame df_ret = pd.merge( df_st_data, df_st_credit, on = 'student_id' ) df_ret.head(3) 만
ds31x.tistory.com
pd.concat() 함수:
- 단순히 두
DataFrame을 상하 또는 좌우로 연결. index가 중복될 수 있으므로 주의가 필요함.axisparameter를 사용해 행(0) 또는 열(1) 방향 의 결합을 선택 가능함.
# Load Library
import pandas as pd
# Create DataFrame
a = {
'id': [0,1,2],
'first': ['kim', 'lee', 'park'],
'second': ['1', '2', '3']
}
df_a = pd.DataFrame(a, columns=['id','first','second'])
# Create DataFrame
b = {
'id': [3,4,5],
'first': ['tae', 'kwon', 'Um'],
'last': ['jason', 'red', 'green']
}
df_b = pd.DataFrame(b, columns=['id','first','last'])
# Concatenate Dataframe by rows
df_c = pd.concat([df_a,df_b],axis=0)
df_d = pd.concat([df_a,df_b],axis=1)

axis=1로 동작시킬 경우 기본적으로 concat은 outer join으로 동작하므로 index 에 유의해야 한다.
다음의 예제코드를 수행해보고 앞서와의 차이점을 생각해볼것
# Load Library
import pandas as pd
# Create DataFrame
a = {
'id': [0,1,2],
'first': ['kim', 'lee', 'park'],
'second': ['1', '2', '3']
}
df_a = pd.DataFrame(a, columns=['id','first','second']).set_index('id')
# Create DataFrame
b = {
'id': [3,4,5],
'first': ['tae', 'kwon', 'Um'],
'last': ['jason', 'red', 'green']
}
df_b = pd.DataFrame(b, columns=['id','first','last']).set_index('id')
# Concatenate Dataframe by rows
df_c = pd.concat([df_a,df_b],axis=0)
df_d = pd.concat([df_a,df_b],axis=1)
Summary
merge는 더 복잡한 결합 조건(예: 특정 키에 따른 결합)에 적합하고,concat은 데이터를 단순하게 이어 붙일 때 사용됨.
'Python > pandas' 카테고리의 다른 글
| [pandas] 데이터 타입에 따른 column 추출: select_dtypes() (0) | 2024.01.12 |
|---|---|
| [pandas] merge 예제. (0) | 2024.01.12 |
| [Term] ETL Tools (0) | 2024.01.10 |
| [pandas] dropna : missing value 처리 (삭제) (0) | 2024.01.09 |
| [pandas] Column (or rows) 제거하기 (0) | 2024.01.09 |