Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 Pandas DataFrame에서 임의의 행 하나를 선택하는 방법

문제 상황

입력 — 다음과 같은 샘플 DataFrame이 있다고 가정해 보겠습니다.

 Id Name
0 1 Adam
1 2 Michael
2 3 David
3 4 Jack
4 5 Peter

출력

임의로 선택된 행
 Id    5
Name Peter

해결 방법

이 문제는 아래 단계를 따라 해결할 수 있습니다.

  • DataFrame을 정의합니다.

  • df.shape[0]을 사용해 전체 행 개수를 계산한 뒤 rows 변수에 저장합니다.

  • random 모듈의 randrange 메서드를 이용해 random_row 값을 설정합니다.

random_row = r.randrange(rows)
  • iloc 슬라이싱 안에 random_row를 적용하면 DataFrame에서 임의의 한 행을 추출할 수 있습니다.

df.iloc[random_row,:]

여기서 randrange(rows)는 0부터 rows-1 사이의 정수 중 하나를 무작위로 반환하며, 이 값이 곧 선택될 행의 인덱스가 됩니다. 또한 df.iloc[random_row, :]에서 콜론(:)은 해당 행의 모든 열을 가져오겠다는 의미입니다.

예제 코드

아래 예제를 통해 실제 동작을 자세히 살펴보겠습니다.

import pandas as pd
import random as r

data = { 'Id': [1,2,3,4,5],'Name': ['Adam','Michael','David','Jack','Peter']}
df = pd.DataFrame(data)
print("DataFrame is\n", df)

rows = df.shape[0]
print("total number of rows:-", rows)

random_row = r.randrange(rows)
print("print any random row is\n")
print(df.iloc[random_row,:])

실행 결과

DataFrame is
 Id Name
0 1 Adam
1 2 Michael
2 3 David
3 4 Jack
4 5 Peter
total number of rows:- 5
print any random row is
  Id   3
Name David

참고: sample() 메서드 활용하기

pandas에서는 df.sample(n=1)을 사용하는 더 간단한 방법도 있습니다. 이 메서드는 별도의 행 개수 계산 없이 한 줄로 임의의 행을 추출할 수 있어 코드가 훨씬 간결해집니다.

df.sample(n=1)