2025.02.24 - [프로그래밍/Python 관련 정보] - [Pandas] Table of Contents
Pandas 데이터프레임을 말 그대로 새로운 값으로 update 해주는 method가 Update입니다.
(1) Sytax
DataFrame.update(other, join='left', overwrite=True, filter_func=None, errors='raise')
(2) 입력인자(Arguments )
- other (필수)
업데이트할 데이터를 포함하는 다른 DataFrame을 지정합니다.
인덱스와 컬럼이 일치하는 경우 해당 위치의 값이 업데이트됩니다. - overwrite=True (Default)
True: NaN을 포함한 값을 덮어씌웁니다.
False: 기존 값이 NaN이 아닌 경우에는 덮어씌우지 않고 유지합니다. - filter_func=None (Default)
특정 조건을 만족하는 경우에만 업데이트를 수행하도록 합니다.
filter_func에 함수를 전달하면, True를 반환하는 경우에만 업데이트됩니다. - errors='raise' (Default)
원본 데이터에 업데이트 대상이 없을 경우에 오류를 발생시킬 것인지 여부를 설정합니다.
'raise': 업데이트 중 예외 발생 시 오류를 발생시킵니다.
'ignore': 오류 발생 시 무시하고 진행합니다.
참고) np.nan(NaN) vs. NA
np.nan은 실수 값이며 연산속도가 빠르고 편리.
Pandas에서 다양한 type의 데이터를 처리하는데 이 때 결측치를 NA로 처리(python의 None)
(3) 예시
더보기
import pandas as pd
# 원본 DataFrame
df1 = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 업데이트할 DataFrame (update매서드의 'other' argument로 넣겠습니다)
df2 = pd.DataFrame({
'A': [100, None, 300], # NaN 값은 업데이트되지 않음
'B': [None, 500, 600]
})
overwrite=False 사용 (NaN인 경우 덮어씌우지 않음) 예시
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [100, None, 300], 'B': [None, 500, 600]})
df1.update(df2, overwrite=False)
print(df1)
filter_func 사용 (특정 조건을 만족하는 경우만 업데이트) 예시
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [100, 200, 300], 'B': [400, 500, 600]})
# 필터 함수: 값이 200보다 큰 경우만 업데이트
df1.update(df2, filter_func=lambda x: x > 200)
print(df1)
오류 무시 예시
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [10, 20, 30]}) # 존재하지 않는 컬럼
df1.update(df2, errors='ignore')
print(df1)
A B
0 1 4
1 2 5
2 3 6
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [10, 20, 30]}) # df1에 없는 컬럼
df1.update(df2, errors='raise') # 존재하지 않는 컬럼이 있어서 오류 발생
KeyError: "DataFrame updating with non-existent columns: {'C'}"
'프로그래밍 > Python 관련 정보' 카테고리의 다른 글
[Pandas] select_dtypes() (0) | 2025.02.23 |
---|---|
[Pandas] drop_duplicates (0) | 2025.02.23 |
[Pandas] sort_index() / sort_values() (0) | 2025.02.23 |
[Pandas] nlargest/nsmallest (0) | 2025.02.22 |
[Python 기초] Broadcasting (0) | 2025.02.22 |