Python Pandas를 사용하여 두 개의 데이터프레임을 결합하는 방법
concat() 함수 사용:
- 설명:
concat()
함수는 행 또는 열 기준으로 데이터프레임을 연결합니다. - 예제:
import pandas as pd
# 두 개의 데이터프레임 생성
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})
# 행 기준 결합
df_concat_row = pd.concat([df1, df2])
print(df_concat_row)
# 열 기준 결합
df_concat_col = pd.concat([df1, df2], axis=1)
print(df_concat_col)
merge() 함수 사용:
- 설명:
merge()
함수는 공통 열을 기준으로 두 데이터프레임을 조인합니다.
import pandas as pd
# 두 개의 데이터프레임 생성
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'ID': [1, 2, 3]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12], 'ID': [1, 2, 3]})
# 공통 열 'ID' 기준으로 내부 조인
df_merged = df1.merge(df2, on='ID')
print(df_merged)
join() 함수 사용:
- 설명:
join()
함수는merge()
함수와 유사하지만, SQL 스타일의 조인 유형을 더 유연하게 제공합니다.
import pandas as pd
# 두 개의 데이터프레임 생성
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'ID': [1, 2, 3]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12], 'ID': [1, 2, 3]})
# 'left' 조인: df1의 모든 행 포함, 일치하는 df2 행만 추가
df_join_left = df1.join(df2, on='ID', how='left')
print(df_join_left)
# 'inner' 조인: 공통 ID가 있는 행만 포함
df_join_inner = df1.join(df2, on='ID', how='inner')
print(df_join_inner)
주의 사항:
- 결합하려는 데이터프레임의 열 이름이 동일하면 충돌이 발생할 수 있습니다.
concat()
함수는 행 또는 열을 기준으로 간단하게 결합하는 데 유용하지만,merge()
또는join()
함수만큼 유연하지 않습니다.merge()
및join()
함수는 데이터프레임을 조인할 때 ON 조건을 명확하게 지정해야 합니다.
예제 코드: 두 개의 데이터프레임을 서로 다른 축으로 결합하기
행 기준 결합
두 개의 데이터프레임 df1
과 df2
가 있다고 가정합니다.
import pandas as pd
# 데이터프레임 생성
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})
다음 코드는 df1
과 df2
를 행 방향으로 결합합니다.
# 행 기준 결합
df_concat_row = pd.concat([df1, df2])
print(df_concat_row)
결과:
A B C D
0 1 4 7 10
1 2 5 8 11
2 3 6 9 12
# 열 기준 결합
df_concat_col = pd.concat([df1, df2], axis=1)
print(df_concat_col)
A B C D
0 1 4 7 10
1 2 5 8 11
2 3 6 9 12
설명:
concat()
함수는 기본적으로 행 방향으로 데이터프레임을 결합합니다.axis
매개 변수를 1로 설정하면 열 방향으로 결합할 수 있습니다.- 결합되는 데이터프레임의 열 수가 동일해야 합니다.
- 열 이름이 동일하면 충돌이 발생할 수 있으며,
ignore_index
매개 변수를 사용하여 해결할 수 있습니다.
추가 예제:
- 특정 열을 기준으로 행 기준 결합:
concat([df1, df2], ignore_index=True)
- 인덱스를 기준으로 열 기준 결합:
concat([df1, df2], axis=1, join='inner')
주의:
- 결합하려는 데이터프레임의 데이터 형식이 호환되어야 합니다.
- 결합된 데이터프레임의 인덱스를 조정해야 할 수도 있습니다.
Pandas를 사용하여 두 개의 데이터프레임을 결합하는 대체 방법
append() 함수:
- 설명:
append()
함수는 기존 데이터프레임에 새로운 행을 추가하는 데 사용됩니다.
import pandas as pd
# 데이터프레임 생성
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})
# df2를 df1의 아래에 추가
df_append = df1.append(df2)
print(df_append)
A B C D
0 1 4 NaN NaN
1 2 5 NaN NaN
2 3 6 NaN NaN
3 7 8 9 10
4 8 9 11 12
inplace= 매개변수 사용:
- 설명:
merge()
및join()
함수에서inplace=True
매개변수를 사용하면 원본 데이터프레임을 변경할 수 있습니다.
import pandas as pd
# 데이터프레임 생성
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'ID': [1, 2, 3]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12], 'ID': [1, 2, 3]})
# df1을 df2와 내부 조인하여 원본 df1 수정
df1.merge(df2, on='ID', how='inner', inplace=True)
print(df1)
A B C D ID
0 1 4 7 10 1
1 2 5 8 11 2
다양한 조인 유형:
merge()
및join()
함수는 다양한 조인 유형을 제공합니다.how
매개변수를 사용하여 'left', 'right', 'outer', 'inner' 등을 지정할 수 있습니다.
SQL 문 사용:
- Pandas는
read_sql()
함수를 통해 SQL 문을 사용하여 데이터베이스에서 데이터를 불러올 수 있습니다. - 이미 SQL 문으로 데이터를 조합한 경우, Pandas를 통해 데이터프레임으로 변환하여 활용할 수 있습니다.
- 대체 방법을 사용하기 전에 각 방법의 작동 방식과 제약 사항을 이해해야 합니다.
- 원본 데이터프레임을 변경하는 작업은 주의해서 수행해야 합니다.
적절한 대체 방법 선택:
- 행 추가:
append()
- 기존 데이터프레임 변경:
inplace=True
매개변수 - 다양한 조인 유형:
merge()
,join()
- SQL 데이터 활용:
read_sql()
이 외에도 여러 라이브러리 및 도구를 사용하여 데이터프레임을 결합할 수 있습니다.
python pandas