하위 집합에서 파생된 DataFrame을 수정할 때 'SettingWithCopyWarning'이 발생하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-29 12:12:02
원래의
592명이 탐색했습니다.

Why Does `SettingWithCopyWarning` Occur When Modifying DataFrames Derived from Subsets?

SettingWithCopyWarning의 원인 찾기

.loc[row_indexer, col_indexer] = 값을 사용하여 DataFrame을 수정하려고 하면 "SettingWithCopyWarning" 지속됩니다. 이 문제는 .copy() 메서드를 호출하지 않고 다른 DataFrame에서 DataFrame 슬라이스에 액세스할 때 발생합니다.

단계별 오류 재현

다음 코드를 고려하세요.

import pandas as pd

d = {'col1': [1, 2, 3, 4], 'col2': [3, 4, 5, 6]}
df = pd.DataFrame(data=d)

df['new_column'] = None
df.loc[0, 'new_column'] = 100
로그인 후 복사

처음에는 경고가 없습니다. 그러나 df:

new_df = df.loc[df.col1 > 2]
로그인 후 복사

의 하위 집합을 기반으로 새 DataFrame을 생성한 다음 .loc:

new_df.loc[2, 'new_column'] = 100
로그인 후 복사

을 사용하여 새 DataFrame을 수정하려고 하면 경고가 발생합니다.

해결책: 하위 집합에서 파생된 데이터 프레임에 .copy() 사용

이 문제를 해결하려면 기존 DataFrame의 하위 집합.

new_df_copy = df.loc[df.col1 > 2].copy()
new_df_copy.loc[2, 'new_column'] = 100
로그인 후 복사

.copy()를 호출하면 하위 집합의 독립적인 복사본을 생성하여 값을 수정할 때 경고를 피할 수 있습니다.

위 내용은 하위 집합에서 파생된 DataFrame을 수정할 때 'SettingWithCopyWarning'이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!