1. 데이터프레임을 두개 만든다
import pandas as pd
df_1 = pd.DataFrame([[1, 'kim', 'a'],
[2, 'lee', 'a'],
[3, 'jeong', 'b']],
columns = ['id', 'name', 'grade'])
df_2 = pd.DataFrame([[1, 'park', 'c'],
[2, 'oh', 'c'],
[3, 'ju', 'c']],
columns = ['id', 'name', 'grade'])
print(df_1)
print(df_2)
2. 데이터프레임을 id가 같은 것으로 left 병합해보자
import pandas as pd
df_1 = pd.DataFrame([[1, 'kim', 'a'],
[2, 'lee', 'a'],
[3, 'jeong', 'b']],
columns = ['id', 'name', 'grade'])
df_2 = pd.DataFrame([[1, 'park', 'c'],
[2, 'oh', 'c'],
[3, 'ju', 'c']],
columns = ['id', 'name', 'grade'])
df_result = pd.merge(df_1, df_2, how='left', on='id')
print(df_result)
이름이 name_x, grade_x, name_y, grade_y 가 됐다.
처음 데이터프레임 두개의 이름을 다르게 수정해서 병합해보자
import pandas as pd
df_1 = pd.DataFrame([[1, 'kim', 'a'],
[2, 'lee', 'a'],
[3, 'jeong', 'b']],
columns = ['id', 'left_name', 'left_grade'])
df_2 = pd.DataFrame([[1, 'park', 'c'],
[2, 'oh', 'c'],
[3, 'ju', 'c']],
columns = ['id', 'right_name', 'right_grade'])
df_result = pd.merge(df_1, df_2, how='left', on='id')
print(df_result)
df_1과 df_2를 left join 했으니, df_2에 다른 id가 있으면 어떻게될까
import pandas as pd
df_1 = pd.DataFrame([[1, 'kim', 'a'],
[2, 'lee', 'a'],
[3, 'jeong', 'b']],
columns = ['id', 'left_name', 'left_grade'])
df_2 = pd.DataFrame([[1, 'park', 'c'],
[2, 'oh', 'c'],
[3, 'ju', 'c'],
[4, 'abc', 'd']],
columns = ['id', 'right_name', 'right_grade'])
df_result = pd.merge(df_1, df_2, how='left', on='id')
print(df_result)
df_2에 id가 4인 것을 추가했으나 병합 후 아무것도 나타나지 않았다.
그럼 id를 3으로 수정해보자
import pandas as pd
df_1 = pd.DataFrame([[1, 'kim', 'a'],
[2, 'lee', 'a'],
[3, 'jeong', 'b']],
columns = ['id', 'left_name', 'left_grade'])
df_2 = pd.DataFrame([[1, 'park', 'c'],
[2, 'oh', 'c'],
[3, 'ju', 'c'],
[3, 'abc', 'd']],
columns = ['id', 'right_name', 'right_grade'])
df_result = pd.merge(df_1, df_2, how='left', on='id')
print(df_result)
left join 돼 3과 조인된 것을 확인할 수 있다.
조인 결과 id, left_name, right_grade만 보고싶다면 어떻게하면될까
import pandas as pd
df_1 = pd.DataFrame([[1, 'kim', 'a'],
[2, 'lee', 'a'],
[3, 'jeong', 'b']],
columns = ['id', 'left_name', 'left_grade'])
df_2 = pd.DataFrame([[1, 'park', 'c'],
[2, 'oh', 'c'],
[3, 'ju', 'c'],
[3, 'abc', 'd']],
columns = ['id', 'right_name', 'right_grade'])
df_result = pd.merge(df_1, df_2, how='left', on='id')
df_result = df_result[['id', 'left_name', 'right_grade']]
print(df_result)
현재 상태에서 right join 을 해보자
import pandas as pd
df_1 = pd.DataFrame([[1, 'kim', 'a'],
[2, 'lee', 'a'],
[3, 'jeong', 'b']],
columns = ['id', 'left_name', 'left_grade'])
df_2 = pd.DataFrame([[1, 'park', 'c'],
[2, 'oh', 'c'],
[3, 'ju', 'c'],
[3, 'abc', 'd']],
columns = ['id', 'right_name', 'right_grade'])
df_result = pd.merge(df_1, df_2, how='right', on='id')
print(df_result)
현재 df_1 에 id가 3인게 한개고 df_2 에 id가 3인게 두개다.
df_1에도 id가 3인게 두개면 어떻게될까
left join 을 해보자
import pandas as pd
df_1 = pd.DataFrame([[1, 'kim', 'a'],
[2, 'lee', 'a'],
[3, 'jeong', 'b'],
[3, 'abc', 'd']],
columns = ['id', 'left_name', 'left_grade'])
df_2 = pd.DataFrame([[1, 'park', 'c'],
[2, 'oh', 'c'],
[3, 'ju', 'c'],
[3, 'def', 'd']],
columns = ['id', 'right_name', 'right_grade'])
df_result = pd.merge(df_1, df_2, how='left', on='id')
print(df_result)
두개가 다 조인돼 4개의 행을 생성하는 것을 확인할 수 있다
'Programming Language > Python' 카테고리의 다른 글
[python] 판다스 데이터프레임 기초 만드는 방법 (0) | 2022.01.30 |
---|---|
[python] 판다스 데이터프레임 이미지로 저장하는 방법 (0) | 2022.01.28 |
[python] 판다스 데이터프레임 만드는 방법 (0) | 2022.01.28 |
[Anaconda] 아나콘다로 파이썬 3.6 가상환경 만들기 (0) | 2021.09.16 |
[Anaconda] 아나콘다 버전 업데이트하기 (0) | 2021.09.16 |