본문 바로가기
프로그래밍/Python 관련 정보

[Pandas] update

by 물박사의 저장공간 2025. 2. 23.

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