만약 두 데이터프레임 df1, df2가 있을 때, 두 데이터프레임에서 특정 칼럼이 동일하고, 그 칼람에 들어있는 데이터가 일치한다면, df1에는 없고 df2에는 있는 칼럼을 df1에 붙여넣으려면 어떻게 해야 할까요?
바로, merge() 함수를 이용해서 변경이 가능한데요, 아래 코드를 보면서 설명하도록 하겠습니다.
- merge() : 칼럼 비교 후 붙여 넣기
먼저, 아래와 같은 데이터프레임 df1과 df2가 있다고 가정해보겠습니다.
# <df1>
item price count
0 water 1000 1
1 milk 2000 5
2 coffee 3000 2
3 ade 4000 1
4 juice 5000 3
5 tea 6000 2
# <df2>
item price rating
0 water 1000 4.5
1 milk 2000 3.4
2 americano 3500 5.3
3 ade 4000 2.3
4 latte 4500 5.0
5 tea 6000 3.3
df1에는 'item', 'price', 'count' 칼럼이 있고, df2에는 'item', 'price', 'rating' 칼럼이 있습니다. 두 데이터프레임 모두 'item', 'price' 칼럼이 있지만 df2에 있는 2번째 행, 4번째 행에 있는 데이터는 df1에 없는 데이터를 가집니다.
이제 df1에는 없지만 df2에 있는 'rating' 칼럼을 'item', 'price' 칼럼이 동일하다면 'rating' 데이터를 df1에 추가하도록 merge() 함수를 사용해보겠습니다.
df1['rating'] = df1.merge(df2,
left_on=["item","price"],
right_on=["item","price"],
how="left")["rating"]
각 코드에 담긴 의미는 다음과 같습니다.
left_on=["item","price"] : df1의 'item', 'price' 칼럼과
right_on=["item","price"] : df2의 'item', 'price' 칼럼을 비교한 뒤 일치하면
how="left")["rating"] : 'left'인 df1 로 df2의 'rating' 칼럼의 데이터를 추가하기
위 코드를 실행한 뒤, df1을 출력하면 아래와 같이 일치하는 행만 'rating' 값이 잘 붙여 넣어졌음을 확인할 수 있습니다.
item price count rating
0 water 1000 1 4.5
1 milk 2000 5 3.4
2 coffee 3000 2 NaN
3 ade 4000 1 2.3
4 juice 5000 3 NaN
5 tea 6000 2 3.3
'BLOG > 데이터분석' 카테고리의 다른 글
[데이터분석] 데이터프레임 : 특정 칼럼(열)을 리스트로 바꾸는 방법 (0) | 2021.03.16 |
---|---|
[데이터분석] 데이터프레임 : 특정 칼럼(열)에 있는 데이터 출력하기 (0) | 2021.03.16 |
[데이터분석] 데이터프레임 : 하나의 데이터 다른 값으로 바꾸기 (2) - iloc (0) | 2021.03.16 |
[데이터분석] 데이터프레임 : 하나의 데이터 다른 값으로 바꾸기 (1) - loc (0) | 2021.03.16 |
[데이터분석] 데이터프레임 : 특정 열(칼럼)에 있는 데이터를 연산해서 결측치(NaN) 채우기 - fillna() (0) | 2021.03.15 |