HOWTO · Pandas

Dataframe Pandas의 첫 번째 행 가져오기

iloc, head(), 필터링, query(), take(), 슬라이싱을 사용해 Pandas DataFrame의 첫 번째 행을 선택하고 Series 결과와 DataFrame 결과 중 무엇을 얻을지 선택하는 방법을 배웁니다.

이 페이지의 내용

df.iloc[0]을 사용하면 첫 번째 행을 Series로 가져오고, df.head(1)을 사용하면 한 행짜리 DataFrame으로 가져옵니다. 조건에 맞는 첫 번째 행을 찾으려면 먼저 필터링한 다음 첫 번째 결과를 선택하세요.

예제에서는 선택된 값과 원래 행 레이블을 쉽게 확인할 수 있도록 작은 DataFrame을 사용합니다. 각 코드 블록은 독립적으로 실행할 수 있으며, pandas가 설치된 Python 환경이 필요합니다. 제공된 런타임 실행에서 관찰한 출력은 각 예제 뒤에 표시되어 있습니다.

pandas.DataFrame.iloc 속성으로 Pandas DataFrame의 첫 번째 행 가져오기

pandas.DataFrame.iloc은 정수 위치를 기준으로 행과 열을 선택합니다. 위치 0은 인덱스 레이블과 관계없이 첫 번째 행을 뜻합니다. df.iloc[0]처럼 한 행을 선택하면 Series가 반환되며, 이 Series의 인덱스에는 DataFrame의 열 이름이 들어 있습니다. 행 위치 0, 열 위치 1의 단일 값을 선택하려면 df.iloc[0, 1]을 사용하세요.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 200, 350],
    }
)

first_row = df.iloc[0]
print(first_row)
C_1      A
C_2     40
C_3    430
Name: 0, dtype: object

Series 형태가 이후 계산이나 열 이름을 통한 값 접근에 편리하다면 이 방법을 선택하세요. 2차원 DataFrame 형태를 유지하려면 df.iloc[[0]] 또는 아래 방법 중 하나를 사용하면 됩니다.

pandas.DataFrame.head() 메서드로 Pandas DataFrame의 첫 번째 행 가져오기

pandas.DataFrame.head(n)은 처음 n개 행을 DataFrame으로 반환합니다. 1을 전달하면 열 구조와 인덱스 레이블을 유지하면서 첫 번째 행만 가져옵니다. 이후 코드에서 DataFrame이 필요하다면 이 방법이 가장 명확한 선택인 경우가 많습니다.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 200, 350],
    }
)

first_row = df.head(1)
print(first_row)
  C_1  C_2  C_3
0   A   40  430

핵심은 반환되는 형태입니다. df.iloc[0]은 1차원 Series이고, df.head(1)은 DataFrame 형태를 유지합니다.

지정한 조건에 따라 Pandas DataFrame의 첫 번째 행 가져오기

첫 번째 일치 항목을 선택하기 전에 행을 필터링하세요. 이 예제의 조건은 C_2 < 40 및 C_3 > 450이며, 처음 일치하는 행의 레이블은 1입니다. &로 두 조건을 결합하므로 불리언 마스크에서 각 비교식을 괄호로 묶습니다.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 500, 350],
    }
)

matches = df[(df["C_2"] < 40) & (df["C_3"] > 450)]
first_match = matches.head(1)
print(first_match)
  C_1  C_2  C_3
1   B   34  980

일치하는 행이 없으면 head(1)은 빈 DataFrame을 반환합니다. 일치 항목이 있을 때 단일 Series가 필요하면 matches.iloc[0]으로 선택하세요. 조건에 맞는 행이 없을 수도 있다면 먼저 matches.empty를 확인합니다.

query() 메서드는 같은 필터를 문자열로 표현하며, 읽기 쉬운 열 표현식이 필요할 때 편리할 수 있습니다. 불리언 필터 예제와 같은 조건을 사용하세요.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 500, 350],
    }
)

matches = df.query("(C_2 < 40) & (C_3 > 450)")
first_match = matches.head(1)
print(first_match)
  C_1  C_2  C_3
1   B   34  980

Python 변수의 값을 사용하려면 query() 식에서 @variable을 사용합니다. 예를 들어 limit = 40이라면 df.query("C_2 < @limit")처럼 참조할 수 있습니다.

pandas.DataFrame.take() 메서드로 Pandas DataFrame의 첫 번째 행 가져오기

기본 행 축을 사용할 때 pandas.DataFrame.take()는 위치를 기준으로 행을 선택합니다. [0]을 전달하면 원래 인덱스 레이블을 유지한 한 행짜리 DataFrame을 가져옵니다.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 200, 350],
    }
)

first_row = df.take([0])
print(first_row)
  C_1  C_2  C_3
0   A   40  430

행 위치 목록이 이미 있다면 take()를 사용하세요. 첫 번째 행만 간단히 선택하려는 경우에는 head(1)이나 iloc[[0]]이 의도를 더 명확하게 전달할 수 있습니다.

슬라이싱으로 Pandas DataFrame의 첫 번째 행 가져오기

df[:1] 슬라이스는 처음부터 위치 1 직전까지의 행을 선택합니다. DataFrame을 반환하며 선택된 행의 인덱스 레이블을 유지합니다.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 200, 350],
    }
)

first_row = df[:1]
print(first_row)
  C_1  C_2  C_3
0   A   40  430

결론

Series가 필요하면 df.iloc[0]을 사용하고, 한 행짜리 DataFrame이 필요하면 df.head(1), df.iloc[[0]], df.take([0]) 또는 df[:1]을 사용하세요. 조건에 맞는 첫 번째 행을 찾으려면 불리언 조건이나 query()로 필터링한 다음 필터 결과의 첫 번째 행을 선택하면 됩니다. 일치하는 행이 없을 수 있다면 인덱싱 전에 matches.empty를 확인하세요.