HOWTO · Pandas
Pandas DataFrame의 열 반복
이 튜토리얼은 데이터 프레임의 열을 반복하는 방법을 보여줍니다.
이 페이지의 내용
Pandas DataFrame의 열을 순회하려면 DataFrame을 반복해 각 열 레이블을 가져온 다음 df[column]으로 해당 열을 Series로 선택합니다. 레이블과 Series를 함께 받으려면 DataFrame.items()를 사용하고, 열의 위치도 필요하면 enumerate()를 사용합니다.
for 루프와 df[column]으로 열 순회하기
DataFrame을 반복하면 열 레이블이 차례로 반환됩니다. 각 반복에서 df[column]은 해당 레이블에 연결된 Series를 선택합니다. 다음 예제는 각 열 레이블과 그 값을 Python 리스트로 출력합니다.
import pandas as pd
df = pd.DataFrame(
{"name": ["Ada", "Lin"], "score": [9, 8]}
)
for column in df:
print(column, df[column].tolist())
name ['Ada', 'Lin']
score [9, 8]
반복 변수는 name이나 score 같은 레이블이며, 행 번호가 아닙니다. 선택한 Series에는 DataFrame의 행 인덱스가 그대로 유지됩니다. 다음 단계에서 리스트가 유용할 때만 .tolist()로 변환하세요. .values는 배열과 유사한 표현을 제공합니다.
DataFrame.items()로 열 레이블과 Series 순회하기
DataFrame.items()는 각 열 레이블과 해당 Series를 한 쌍으로 반환합니다. 이 쌍을 풀어 두 값을 바로 사용할 수 있습니다. 다음 예제는 각 레이블과 Series의 값을 출력합니다.
import pandas as pd
df = pd.DataFrame(
{"name": ["Ada", "Lin"], "score": [9, 8]}
)
for column_label, series in df.items():
print(column_label, series.tolist())
name ['Ada', 'Lin']
score [9, 8]
하나의 루프에서 레이블과 해당 Series가 모두 필요한 작업에는 이 방법을 선택하세요. 예를 들어 열마다 별도의 서식 지정이나 요약 작업을 적용할 수 있습니다. DataFrame 전체에 한 번에 적용할 수 있는 계산이라면 열을 하나씩 처리하는 것보다 Pandas의 벡터화 연산이 더 명확할 수 있습니다.
enumerate()로 각 열의 위치와 레이블 가져오기
df.columns를 Python 내장 함수 enumerate()로 감싸면 각 레이블과 열 순서에서의 0부터 시작하는 위치를 함께 얻을 수 있습니다. 다음 예제는 각 열의 0부터 시작하는 위치와 레이블을 차례로 출력합니다.
import pandas as pd
df = pd.DataFrame(
{"name": ["Ada", "Lin"], "score": [9, 8]}
)
for position, column_label in enumerate(df.columns):
print(position, column_label)
0 name
1 score
여기서 position은 첫 번째 열에서 0, 두 번째 열에서 1이며 이후에도 같은 방식으로 증가합니다. 행을 식별하는 행 인덱스 레이블과는 다르며, 행 인덱스 값은 연속된 정수가 아닐 수도 있습니다. 다른 작업에 열의 순서와 레이블이 모두 필요하면 이 방법을 사용하세요. 위치가 필요하지 않다면 기본 루프나 DataFrame.items()를 사용하면 됩니다.