[pandas] pd.MultiIndex 다루기

pandas를 이용해서 데이터 통계를 내려다 보면 다중 index 및 column이 요구되는 상황이 발생한다. 항상 구글에 찾는게 귀찮아서 쉽게 찾아보기 위해서 글을 남긴다.


가정

학생들이 실습한 문제를 파이썬을 이용해서 채점하기 위한 작업이 주어졌을 때, 다중 인덱스 처리에 대한 문제를 다룬다.

  1. 전체 문제는 3개
  2. 각 문제는 시간, 분, 초, 점수, 환산점수로 5가지 항목을 갖는다.
  3. index는 학번, 분반 순으로 구성된다.

코드

DataFrame을 이용한 multi index 정의

columns = (pd.MultiIndex.from_product([['문제'], [1,2,3], [
                                             'hour',
                                             'min',
                                             'sec',
                                             'ret',
                                             'score']]))

print(columns)


ret = pd.DataFrame(index=[ids, divs], columns=columns)
ret.index.names = ['학번','분반']

ret.loc[201602058, ('문제', 1, 'score')] = 1
ret
                                             

multi index에서 데이터 삽입

ret.loc[id, [('문제', problem_number, 'score')]] = score
ret.loc[id, [('문제', problem_number, 'hour')]] = int(hour)
ret.loc[id, [('문제', problem_number, 'min')]] = int(min)
ret.loc[id, [('문제', problem_number, 'sec')]] = int(sec)

결과

좋은 웹페이지 즐겨찾기