열이 Pandas의 특정 값과 일치하는 행 인덱스 가져 오기

Sathiya Sarathi 2023년1월30일
  1. Pandas에서 정수/부동 수를 포함하는 행의 인덱스 가져 오기
  2. Pandas에서 문자열을 포함하는 행의 인덱스 가져 오기
열이 Pandas의 특정 값과 일치하는 행 인덱스 가져 오기

이 기사는 Pandas의 특정 기준과 일치하는 행의 색인을 얻는 방법을 보여줍니다.

행의 인덱스를 찾아야하는 필요성은 피쳐 엔지니어링에서 중요합니다. 이러한 기술은 Dataframe에서 이상 값 또는 비정상 값을 제거하는 데 유용 할 수 있습니다. 행 레이블이라고도하는 인덱스는 여러 함수를 사용하여 Pandas에서 찾을 수 있습니다. 다음 예제에서는 다음 스 니펫을 사용하여 생성 된 데이터 프레임에 대해 작업 할 것입니다.

import pandas as pd
import numpy as np

np.random.seed(0)

df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))

print(df)

출력:

     A   B   C   D
0   13  16   1   4
1    4   8  10  19
2    5   7  13   2
3    7   8  15  18
4    6  14   9  10
5   17   6  16  16
6    1  19   4  18
7   15   8   1   2
8   10   1  11   4
9   12  19   3   1
10   1   5   6   7
11   9  18  16   5
12  10  11   2   2
13   8  10   4   7
14  12  15  19   1
15  15   4  13  11
16  12   5   7   5
17  16   4  13   5
18   9  15  16   4
19  16  14  17  18

Pandas에서 정수/부동 수를 포함하는 행의 인덱스 가져 오기

pandas.DataFrame.loc 함수는 레이블 / 이름으로 행과 열에 액세스 할 수 있습니다. 레이블로 전달 된 주어진 부울 조건과 일치하는 행을 반환하는 것은 간단합니다. 스 니펫에서df.loc 옆에있는 대괄호를 확인하세요.

import pandas as pd
import numpy as np

np.random.seed(0)

df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))

print(df.loc[df["B"] == 19])

부울 조건에 해당하는 행은 데이터 프레임 형식의 출력으로 반환됩니다.

출력:

    A   B  C   D
6   1  19  4  18
9  12  19  3   1

아래와 같이 여러 조건을 연결하여 함수에 함께 적용 할 수 있습니다. 이는 특정 조건에 따라 행을 분리하는 데 도움이됩니다.

import pandas as pd
import numpy as np

np.random.seed(0)

df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))

print(df.loc[(df["B"] == 19) | (df["C"] == 19)])

출력:

     A   B   C   D
6    1  19   4  18
9   12  19   3   1
14  12  15  19   1

pandas.DataFrame.index()를 사용하여 행 인덱스 가져 오기

인수로 전달 된 부울 조건을 충족하는 데이터 프레임의 일치하는 인덱스 만 찾으려면pandas.DataFrame.index()가 가장 쉬운 방법입니다.

import pandas as pd
import numpy as np

np.random.seed(0)

df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))

print(df.index[df["B"] == 19].tolist())

위의 스 니펫에서 부울 조건 == 1과 일치하는 A열의 행은 아래와 같이 출력으로 반환됩니다.

출력:

[6, 9]

index()메서드 뒤에tolist()를 넣은 이유는Index를 목록으로 변환하기 위해서입니다. 그렇지 않으면 결과는Int64Index 데이터 유형입니다.

Int64Index([6, 9], dtype='int64'

여러 조건을 기반으로 인덱스 만 검색 할 수도 있습니다. 스 니펫은 다음과 같이 작성할 수 있습니다.

import pandas as pd
import numpy as np

np.random.seed(0)

df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))

print(df.index[(df["B"] == 19) | (df["C"] == 19)].tolist())

출력:

[6, 9, 14]

Pandas에서 문자열을 포함하는 행의 인덱스 가져 오기

문자열 값은 두 가지 방법을 기반으로 일치시킬 수 있습니다. 조건 변경을 제외하고는 이전 섹션에 표시된 두 방법이 모두 작동합니다.

다음 예에서는 다음 스 니펫을 사용합니다.

import pandas as pd

df = pd.DataFrame(
    {
        "Name": ["blue", "delta", "echo", "charlie", "alpha"],
        "Type": ["Raptors", "Raptors", "Raptors", "Raptors", "Tyrannosaurus rex"],
    }
)

print(df)

출력:

      Name               Type
0     blue            Raptors
1    delta            Raptors
2     echo            Raptors
3  charlie            Raptors
4    alpha  Tyrannosaurus rex

정확한 문자열 일치로 행 인덱스 가져 오기

이전 섹션에서 사용한 같음 조건은 Dataframe에서 정확한 문자열 일치를 찾는 데 사용할 수 있습니다. 우리는 두 개의 문자열을 찾을 것입니다.

import pandas as pd

df = pd.DataFrame(
    {
        "Name": ["blue", "delta", "echo", "charlie", "alpha"],
        "Type": ["Raptors", "Raptors", "Raptors", "Raptors", "Tyrannosaurus rex"],
    }
)

print(df.index[(df["Name"] == "blue")].tolist())
print("\n")
print(df.loc[df["Name"] == "blue"])
print("\n")
print(df.loc[(df["Name"] == "charlie") & (df["Type"] == "Raptors")])

출력:

[0]

   Name     Type
0  blue  Raptors

      Name     Type
3  charlie  Raptors

위에서 볼 수 있듯이 조건과 일치하는 인덱스와 행을 모두 수신 할 수 있습니다.

부분 문자열 일치를 사용하여 행 인덱스 가져 오기

문자열 값은 데이터 프레임을str.contains 함수에 연결하여 부분적으로 일치시킬 수 있습니다. 다음 예에서는 cha rlie 및 alpha에서 문자열ha를 찾습니다.

import pandas as pd

df = pd.DataFrame(
    {
        "Name": ["blue", "delta", "echo", "charlie", "alpha"],
        "Type": ["Raptors", "Raptors", "Raptors", "Raptors", "Tyrannosaurus rex"],
    }
)

print(df.index[df["Name"].str.contains("ha")].tolist())
print("\n")
print(df.loc[df["Name"].str.contains("ha")])
print("\n")
print(df.loc[(df["Name"].str.contains("ha")) & (df["Type"].str.contains("Rex"))])

출력:

[3, 4]

      Name               Type
3  charlie            Raptors
4    alpha  Tyrannosaurus rex


    Name               Type
4  alpha  Tyrannosaurus rex

이 함수는 데이터 프레임의 여러 열에서 부분 문자열 일치를 수행하는 데 매우 유용 할 수 있습니다.

관련 문장 - Pandas DataFrame

관련 문장 - Pandas DataFrame Row