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 중국어 웹사이트의 기타 관련 기사를 참조하세요!