Python/NumPy | Pandas

[Pandas] itertuples - 컬럼 접근 방법(?)

비번변경 2025. 4. 30. 15:17

개요

Pandas에서 DataFrame.itertuples을 사용하면 DataFrame의 각 행을 namedtuples 형식으로 반환한다.

이번 글에서는 이 namedtuples을 사용해 컬럼에 접근하는 예시를 하나 적어두려고 한다.

 

+ 다른 사람이 작성한 코드에서 봤는데, 낯선 방법이라 적어둔다.

 

 

방법

itertuples 함수 결과로 변환된 row는 Pandas 객체이다. 이 부분은 namedtuples의 type을 확인해보면 알 수 있다.

import pandas as pd

data = {'col1':[1,2],'col2':[3,4]}
idx = ['row1','row2']
df = pd.DataFrame(data = data, index=idx)

for row in df.itertuples():
    print(f"type(row) : {type(row)}, row : {row}")

Pandas 객체는 Index 속성과 DataFrame의 컬럼을 속성으로 진다. 즉, 때문에 각 행의 컬럼에 접근할 때 객체의 속성에 접근하듯 접근할 수 있다.

import pandas as pd

data = {'col1':[1,2],'col2':[3,4]}
idx = ['row1','row2']
df = pd.DataFrame(data = data, index=idx)

for row in df.itertuples():
    print(f"getattr : {getattr(row, 'col1')}, row.col1: {row.col1}")

다만, 행 수가 많은 데이터프레임을 반복문으로 순회하는 방법은 벡터화 연산보다 성능이 좋지 않기 때문에 필요한 경우에만 사용하는 것이 좋겠다.

 

 

참고 문서

https://wikidocs.net/158781

 

728x90