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.
'파이썬완전정복-Pandas DataFrame > 08. 결합' 카테고리의 다른 글
Pandas DataFrame 08-05. 객체 병합_결측제어 가능 (align) (0) | 2022.01.23 |
---|---|
Pandas DataFrame 08-04. 객체병합 (merge) (0) | 2022.01.23 |
Pandas DataFrame 08-03. 인덱스기준 병합 (join) (0) | 2022.01.23 |
Pandas DataFrame 08-02. 다른 객체로 결측치 덮어쓰기 (combine_first) (0) | 2022.01.23 |
Pandas DataFrame 08-01. 함수를 이용한 열 단위 결합 (combine) (0) | 2022.01.22 |