열이 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 열 헤더를 목록으로 가져 오는 방법
- Pandas DataFrame 열을 삭제하는 방법
- Pandas 에서 DataFrame 열을 Datetime 으로 변환하는 방법
- Pandas DataFrame에서 float를 정수로 변환하는 방법
- 한 열의 값으로 Pandas DataFrame 을 정렬하는 방법
- Pandas 그룹 및 합계를 집계하는 방법