일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 소프트웨어
- 딥러닝
- 파이썬
- 자료구조
- 소프트웨어공학
- 알고리즘
- 컴퓨터비전
- 인공지능
- 머신러닝
- 데이터과학
- Yes
- 자바스크립트
- 2
- 버전관리
- 컴퓨터과학
- 네트워크
- 프로그래밍
- 네트워크보안
- 보안
- 웹개발
- 데이터베이스
- I'm Sorry
- 클라우드컴퓨팅
- 프로그래밍언어
- 코딩
- 데이터분석
- 사이버보안
- 데이터구조
- 컴퓨터공학
- 빅데이터
- Today
- Total
스택큐힙리스트
판다스: 두 개의 데이터 프레임을 여러 열에 대해 병합(join)하기 본문
저는 두 개의 열을 사용하여 두 판다 데이터프레임을 결합하려고 합니다.
new_df = pd.merge(A_df, B_df, how='left', left_on='[A_c1,c2]', right_on = '[B_c1,c2]')
하지만 다음 오류가 발생하였습니다:
pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4164)()
pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4028)()
pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13166)()
pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13120)()
KeyError: '[B_1, c2]'
이걸 제대로 처리하는 올바른 방법이 뭐죠?
답변 1
이것을 시도해보세요.
new_df = pd.merge(A_df, B_df, how='left', left_on=['A_c1','c2'], right_on = ['B_c1','c2'])
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html
left_on : 라벨 또는 리스트 또는 배열, 왼쪽의 조인에 사용할 필드 이름. 벡터 또는 벡터 목록이 될 수 있으며, 열 대신 특정 벡터를 조인 키로 사용하기 위해 데이터 프레임의 길이와 동일한 길이의 벡터 또는 벡터 목록일 수 있습니다.
right_on : 라벨 또는 리스트 또는 어레이-타입, 왼쪽 DataFrame 또는 left_on docs에서 벡터/리스트로 구성된 오른쪽 DataFrame의 필드 이름과 조인할 필드 이름.
답변 2
펜달스: 여러 열을 기준으로 두 개의 데이터 프레임 병합(조인)하기펜달스(Pandas)는 파이썬의 데이터 조작 및 분석에 가장 많이 사용되는 라이브러리 중 하나입니다. 이 라이브러리를 사용하면 데이터 프레임(DataFrame)을 손쉽게 다룰 수 있습니다. 특히, 두 개의 데이터 프레임을 병합(조인)할 때 많은 기능을 제공합니다. 이번 글에서는 펜달스를 사용하여 여러 열을 기준으로 두 개의 데이터 프레임을 병합하는 방법에 대해 알아보겠습니다.
먼저, 두 개의 데이터 프레임을 만들어 보겠습니다. 첫 번째 데이터 프레임(df1)은 학생들의 성적을 나타냅니다.
```python
import pandas as pd
df1 = pd.DataFrame({
'이름': ['김철수', '이영희', '박영수', '홍길동'],
'국어': [80, 90, 70, 60],
'영어': [70, 80, 90, 60]
})
```
두 번째 데이터 프레임(df2)은 학생들의 정보를 나타냅니다.
```python
df2 = pd.DataFrame({
'이름': ['김철수', '이영희', '박영수', '홍길동'],
'학년': [1, 2, 3, 1],
'성별': ['남', '여', '남', '남']
})
```
이제 두 개의 데이터 프레임을 병합해 보겠습니다. 병합에는 merge() 함수를 사용합니다. 여기서는 '이름' 열을 기준으로 병합해 보겠습니다.
```python
result = pd.merge(df1, df2, on='이름')
```
이렇게 하면 '이름' 열을 기준으로 두 개의 데이터 프레임이 병합됩니다. 이 때, 기본적으로 inner join 방식이 사용됩니다. 따라서 공통된 '이름' 열이 있는 학생들만 결과에 포함됩니다. 결과를 출력해 보겠습니다.
```
이름 국어 영어 학년 성별
0 김철수 80 70 1 남
1 이영희 90 80 2 여
2 박영수 70 90 3 남
3 홍길동 60 60 1 남
```
기본적으로 merge() 함수는 중복된 열 이름이 있을 경우, '_x'와 '_y'를 사용하여 구분합니다. 예를 들어, '이름' 열이 두 개의 데이터 프레임에 모두 포함되어 있기 때문에, 결과에서는 '이름_x'와 '이름_y' 열이 포함됩니다. 이를 해결하기 위해서는 on 매개변수를 리스트로 지정하면 됩니다.
```python
result = pd.merge(df1, df2, on=['이름', '학년'])
```
이제 '이름'과 '학년' 열을 모두 기준으로 병합하게 됩니다.
이와 같이 펜달스를 사용하여 여러 열을 기준으로 두 개의 데이터 프레임을 병합할 수 있습니다. 이를 활용하면 다양한 데이터 조작과 분석이 가능해집니다.