색인에 Pandas DataFrames 병합

Manav Narula 2023년1월30일
  1. merge()를 사용하여 인덱스에서 두 개의 Pandas DataFrame 결합
  2. join()을 사용하여 인덱스에서 두 개의 Pandas DataFrame 결합
색인에 Pandas DataFrames 병합

데이터 과학 및 기계 학습의 세계에서 추가 분석을 위해 데이터를 구성, 유지 관리 및 정리하는 작업에 능통해야합니다. 두 개의 DataFrame을 병합하는 것이 이러한 작업의 한 예입니다. Python에서 Pandas 라이브러리를 사용하여 두 개의 DataFrame을 결합하는 것이 쉽습니다.

Pandas는 결합 할 수있는 merge()join()의 두 가지 유용한 함수를 제공합니다. 두 개의 DataFrame. 이 두 방법은 매우 비슷하지만merge()는 더 다양하고 유연한 것으로 간주됩니다. 또한 최종 DataFrame의 동작을 변경하는 많은 매개 변수를 제공합니다. join()은 인덱스에서 두 개의 DataFrame을 결합하는 반면merge()는 두 개의 DataFrame을 병합하는 키 역할을 할 수있는 열을 지정할 수 있습니다.

이 두 함수의 공통 매개 변수 중 하나는 조인 유형을 정의하는 ‘방법’입니다. 기본적으로how 매개 변수는merge()의 경우inner이고join()의 경우left이지만 둘 다left,right,innerouter로 변경할 수 있습니다. . 그들 모두의 차이점을 아는 것이 중요합니다.

두 개의 Pandas DataFrame을 결합하는 동안 하나는 Left DataFrame이고 다른 하나는 Right DataFrame이라고 가정합니다. merge()join()은 모두 키 열의 레코드와 일치합니다. inner 조인은 두 DataFrame 모두에서 일치하는 레코드의 DataFrame을 반환합니다. outer 조인은 양쪽 DataFrames의 모든 요소가있는 병합 된 DataFrame을 생성하여 양쪽에서 누락 된 값에 대해 NaN을 채 웁니다. left 조인은 왼쪽 DataFrame의 모든 요소를 포함하지만 Right DataFrame의 일치하는 레코드 만 포함합니다. left의 반대는 오른쪽 DataFrame의 모든 요소와 왼쪽 DataFrame의 일치하는 레코드 만있는 right입니다. 이 모든 것은 아래 코드에서 DataFrames를 결합 할 다음 섹션의 예제 코드에서 더 명확해질 것입니다.

import pandas as pd
import numpy as np

df1 = pd.DataFrame(["a", "b", "d", "e", "h"], index=[1, 2, 4, 5, 7], columns=["C1"])
df2 = pd.DataFrame(
    ["AA", "BB", "CC", "EE", "FF"], index=[1, 2, 3, 5, 6], columns=["C2"]
)

print(df1)
print(df2)

출력:

  C1
1  a
2  b
4  d
5  e
7  h
   C2
1  AA
2  BB
3  CC
5  EE
6  FF

merge()를 사용하여 인덱스에서 두 개의 Pandas DataFrame 결합

색인에서 두 개의 DataFrame을 병합 할 때 merge()함수의 left_indexright_index매개 변수 값은 True여야합니다. 다음 코드 예제는 조인 유형으로inner를 사용하여 두 개의 DataFrame을 결합합니다.

import pandas as pd
import numpy as np

df1 = pd.DataFrame(["a", "b", "d", "e", "h"], index=[1, 2, 4, 5, 7], columns=["C1"])
df2 = pd.DataFrame(
    ["AA", "BB", "CC", "EE", "FF"], index=[1, 2, 3, 5, 6], columns=["C2"]
)

df_inner = df1.merge(df2, how="inner", left_index=True, right_index=True)

print(df_inner)

출력:

  C1  C2
1  a  AA
2  b  BB
5  e  EE

다음 코드는 조인 유형이outer 인 DataFrame을 병합합니다.

import pandas as pd
import numpy as np

df1 = pd.DataFrame(["a", "b", "d", "e", "h"], index=[1, 2, 4, 5, 7], columns=["C1"])
df2 = pd.DataFrame(
    ["AA", "BB", "CC", "EE", "FF"], index=[1, 2, 3, 5, 6], columns=["C2"]
)

df_outer = df1.merge(df2, how="outer", left_index=True, right_index=True)

print(df_outer)

출력:

    C1   C2
1    a   AA
2    b   BB
3  NaN   CC
4    d  NaN
5    e   EE
6  NaN   FF
7    h  NaN

보시다시피 조인 유형이 inner인 병합 된 DataFrame에는 두 DataFrames의 일치하는 레코드 만있는 반면 outer조인이있는 병합 된 DataFrame에는 누락 된 레코드가 NaN으로 채워집니다. 이제left 조인을 사용합니다.

import pandas as pd
import numpy as np

df1 = pd.DataFrame(["a", "b", "d", "e", "h"], index=[1, 2, 4, 5, 7], columns=["C1"])
df2 = pd.DataFrame(
    ["AA", "BB", "CC", "EE", "FF"], index=[1, 2, 3, 5, 6], columns=["C2"]
)

df_left = df1.merge(df2, how="left", left_index=True, right_index=True)

print(df_left)

출력:

  C1   C2
1  a   AA
2  b   BB
4  d  NaN
5  e   EE
7  h  NaN

위의 병합 된 DataFrame에는 왼쪽 DataFrame의 모든 요소와 오른쪽 DataFrame의 일치하는 레코드 만 있습니다. 정반대는 아래와 같이right 조인입니다.

import pandas as pd
import numpy as np

df1 = pd.DataFrame(["a", "b", "d", "e", "h"], index=[1, 2, 4, 5, 7], columns=["C1"])
df2 = pd.DataFrame(
    ["AA", "BB", "CC", "EE", "FF"], index=[1, 2, 3, 5, 6], columns=["C2"]
)

df_right = df1.merge(df2, how="right", left_index=True, right_index=True)

print(df_right)

출력:

    C1  C2
1    a  AA
2    b  BB
3  NaN  CC
5    e  EE
6  NaN  FF

join()을 사용하여 인덱스에서 두 개의 Pandas DataFrame 결합

join()메소드는 색인을 기반으로 두 DataFrame을 결합하며 기본적으로 결합 유형은left입니다. 항상 올바른 DataFrame의 인덱스를 사용하지만 Left DataFrame의 키를 언급 할 수 있습니다. merge()에서 언급 한 것과 동일한join()함수에 대한 조인 유형을 지정할 수 있습니다.

다음 예제는outer 조인 유형이있는 병합 된 DataFrame을 보여줍니다.

import pandas as pd
import numpy as np

df1 = pd.DataFrame(["a", "b", "d", "e", "h"], index=[1, 2, 4, 5, 7], columns=["C1"])
df2 = pd.DataFrame(
    ["AA", "BB", "CC", "EE", "FF"], index=[1, 2, 3, 5, 6], columns=["C2"]
)
df_outer = df1.join(df2, how="outer")
print(df_outer)

출력:

    C1   C2
1    a   AA
2    b   BB
3  NaN   CC
4    d  NaN
5    e   EE
6  NaN   FF
7    h  NaN
작가: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

관련 문장 - Pandas DataFrame