2023-01-14 19:50:34

Pandas 데이터프레임을 사용할 때 처음 조금 낯설게 느껴지는 것이 있습니다. 반복문에서 데이터프레임의 행들을 얻고 싶을 때, 본능적으로 다음과 같이 사용하려고 합니다. 하지만, 이렇게 하면 데이터 프레임의 컬럼들만 얻게 됩니다. 

 

잘못된 접근

import pandas as pd

df = pd.DataFrame([[95, 92, 88], [84, 67, 88], [91, 99, 68], [87, 79, 81], [77, 92, 85]],
        index=['A', 'B', 'C', 'D', 'E'],
        columns=['math', 'english', 'history'],
    )
print(df, '\n')

for row in df:
    print(row)

 

 

옳은 접근

데이터프레임의 행을 하나씩 반복해서 얻고 싶을 때는 df.iterrows()를 사용할 수 있습니다. 

import pandas as pd

df = pd.DataFrame([[95, 92, 88], [84, 67, 88], [91, 99, 68], [87, 79, 81], [77, 92, 85]],
        index=['A', 'B', 'C', 'D', 'E'],
        columns=['math', 'english', 'history'],
    )
print(df, '\n')

for idx, row in df.iterrows():
    print("행 인덱스: ", idx)
    print(row['math'], row['english'], row['history'], '\n')

 

 

참고자료

[1] https://ponyozzang.tistory.com/609  

[2] https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.iterrows.html