오늘은 데이터 프레임의 일부행을 변경하는 방법에 대해서 포스팅하겠습니다. 이 부분 또한 제가 자주 하던 실수인데 예를 들어서 df['col'][df.Date>='2009Q1'] = 0 와 같이 입력하는 식입니다. 저는 df라는 데이터프레임의 col 칼럼의 인덱스가 2009년 1분기보다 큰 부분만 값을 0으로 만들고 싶었던 것인데, 이러면 원본 데이터 프레임 df는 변경되지 않습니다.
이렇게 일부만 변경하고자 한다면
1. loc사용 (권장)
df.loc[df.Date >= '2009Q1', 'col'] = 0
2. mask 매서드 사용
df['col'] = df['col'].mask(df.Date >= '2009Q1', 0)
3. where 매서드 사용
df['col'] = df['col'].where(df.Date < '2009Q1', 0)
와 같은 방식으로 변경해주어야 합니다.
참고) 제가 처음 시도했던 것처럼 인덱싱하는 방식을 체이닝 인덱싱(chained indexing)이라고 하며 Pandas에서 데이터프레임이나 시리즈를 여러 단계로 인덱싱하는 것을 뜻합니다. 체이닝 인덱싱은 원본 데이터프레임이 변경되지 않거나, SettingWithCopyWarning 경고가 발생할 수 있습니다. 따라서 loc를 이용한 방법이 권장되는 것이죠.
'프로그래밍 > Python 관련 정보' 카테고리의 다른 글
[Python] Table of Contents (1) | 2025.03.15 |
---|---|
[Python - Frequently Used Code] 리스트 원소 묶어서 pair 생성하기 (1) | 2025.02.28 |
[Phycharm] Table of Contents (0) | 2025.02.26 |
[Pandas] Table of Contents (0) | 2025.02.24 |
[Pandas] 데이터 병합 (0) | 2025.02.24 |