반응형

08-06. 업데이트 (update)

DataFrame.update(other, join='left', overwrite=True, filter_func=None, errors='ignore')

 

개요


update메서드는 DataFrame의 열을 other객체의 동일한 열의 값으로 덮어씌우는 메서드입니다.
반환값 없이 원본이 변경됩니다.

 

사용법


self.update(other, join='left', overwrite=True, filter_func=None, errors='ignore')
other : self에 덮어씌울 객체 입니다.
join : {left} 기준이 될 인덱스 입니다. left만 선택 가능하므로 무시해도됩니다.
overwrite : {True / False} 덮어씌울 방식입니다. True면 self의 모든 데이터에 other을 덮어씌웁니다.
False면 self에서 Na인 값에 대해서만 덮어씌우기를 진행합니다.
filter_func : 덮어씌울값을 함수로 정할 수 있습니다.
errors : {raise / ignore} raise일 경우 self와 other 모두 Na가 아닌 값이 있을경우 오류를 발생시킵니다.

반응형

 

예시


기본 사용법
먼저 3x2짜리 데이터 2개를 만들어보겠습니다.

df1 = pd.DataFrame({'A':[1,2,3],'B':[n,5,6]})
print(df1)
>>
   A    B
0  1  NaN
1  2  5.0
2  3  6.0
df2 = pd.DataFrame({'B':[24,n,26],'C':[37,38,39]})
print(df2)
>>
      B   C
0  24.0  37
1   NaN  38
2  26.0  39

overwrite인수로 업데이트 방식 설정
overwrite인수가 True면 df1과 df2가 이름을 공유하는 열에 대해서 df2의 값을 df1에 덮어씌웁니다.
False일 경우 df1에서 Na인 값에 대해서만 덮어씌우기를 진행합니다.
※ df2에서 Na인 값의 경우 덮어씌워지지 않습니다.
overwrite=True일 경우(기본값)

df1.update(df2,overwrite=True)
print(df1)
>>
   A     B   # df1의 Na를 포함 덮어씌우기가 진행됨. 5의 경우 df2의 값이 Na이므로 무시
0  1  24.0
1  2   5.0
2  3  26.0

overwrite=False일 경우

df1.update(df2,overwrite=False)
print(df1)
>>
   A     B  # df1에서 Na인 값에 대해서만 업데이트가 진행됨.
0  1  24.0
1  2   5.0
2  3   6.0


filter_func로 원하는 값만 업데이트
filter_func에 함수를 넣음으로서 원하는 값만 업데이트가 가능합니다.
6인 값에 대해서만 업데이트를 하도록 filter_func를 설정하겠습니다

df1.update(df2,filter_func=lambda x: x==6)
print(df1)
>>
   A     B   #df1에서 6인 값에 대해서만 업데이트가 진행됨.
0  1   NaN
1  2   5.0
2  3  26.0


errors인수의 사용법
errors인수를 raise로 할 경우 df1 df2 모두 같은 위치에 Na가 아닌 값이 있을 경우 오류를 발생시킵니다.

df1.update(df2,errors='raise')
print(df1)
>>
오류발생
ValueError: Data overlaps.
반응형

+ 최근 글