Select Data (#04)

nooooy·2025년 1월 30일

IntroToPandas

목록 보기
4/9

import pandas as pd

def selectData(students: pd.DataFrame) -> pd.DataFrame:

    tmp = students.loc[students['student_id'] == 101]
    #print(tmp)
    return tmp.iloc[:,1:3] # iloc은 numerical index만 가능하다
    #return tmp.loc[:,['name', 'age']] #여러 개의 열인 경우 [ ]로 묶어주어야 함.
    
    #뻘짓
    # print(students["student_id"][0])
    # for i in range(len(students)) :
    #     if students["student_id"][i] == 101 :
    #         print(students["name"][i], students["age"][i])
    #         print(students[i, 'columns' == 'name, age'])

.loc 과 .iloc

tmp = students.loc[students['student_id'] == 101] 에서 loc은 괄호 [ ] 안에 있는 조건에 해당하는 행(row)을 반환시키는 메서드이다.
조건으로 students['student_id'] 즉, 데이터프레임의 student_id 열(columns)을 조건으로 주었고 그 값이 101이면(==true이면) 그 행을 출력하라는 의미이다.

students['student_id'] == 101의 결과값은 다음과 같다.

0     True 
1    False
2    False
3    False
Name: student_id, dtype: boolean

결국 students.loc[0]이 된 셈이다.

print(tmp)

   student_id     name  age
0         101  Ulysses   13

0번째 행이 잘 출력되었다

tmp.iloc[:,1:3]
iloc은 숫자인덱스(인덱스 번호)로만 작동한다. ['name', 'age'] 라고 넣으면 에러가 난다.
반대로 loc은 인덱스이름으로만 작동한다. 1:3 이라고 넣으면 에러가 난다.


df.loc['이름'] : 조건이 행에(row) 걸려있음.즉, row를 필터링하거나 출력할 때 쓰면 된다.
df.loc[:, '이름'] : 조건이 열(column)에 걸려있음. 즉 column을 필터링하거나 출력할 때 쓰면 된다.


행 열 조건 잡아서 출력하는 테스크가 손에 익지 않아서 많이 해보면서 감을 잡아야 할 것 같다 ㅜㅜ

0개의 댓글