Pandas 0.13.0rc1에 도입된 SettingWithCopyWarning은 DataFrames의 슬라이스 또는 복사본에 값을 설정할 때 발생할 수 있는 문제에 대해 사용자에게 경고합니다. 이 경고는 혼란과 예상치 못한 동작을 방지하는 것을 목표로 합니다.
경고는 DataFrame의 슬라이스 또는 복사본에 값이 설정되는 "체인 할당"으로 인해 발생합니다. as:
df[df['A'] > 2]['B'] = new_val # new_val not set in df
이 예에서 첫 번째 선택(df[df['A'] > 2])은 복사본을 반환합니다. 이 복사본에 'B'를 설정하려고 하면 원본 DataFrame 'df'가 업데이트되지 않습니다. 'df'를 올바르게 업데이트하려면 loc 접근자를 사용하세요:
df.loc[df['A'] > 2, 'B'] = new_val
변경 사항을 원본 DataFrame에 다시 반영할 필요가 없다고 확신하는 경우 경고를 비활성화할 수 있습니다.
import pandas as pd pd.options.mode.chained_assignment = None # default='warn'
슬라이스나 복사본에 대한 할당의 경우 원본 DataFrame을 직접 수정할 수 있는 loc 또는 iloc 접근자를 사용하세요.
df.loc[df['A'] > 2, 'B'] = new_val df.iloc[2:5, 4] = [1, 8, 8]
DataFrame에 대한 새 참조가 필요한 경우 수정하기 전에 DataFrame.copy()를 사용하여 복사본을 만듭니다.
new_df = df.copy() new_df['C'] = df['A'] + df['B']
특정 경우에는 원본 quote_df를 수정하는 대신 원하는 변경 사항을 적용하여 새 DataFrame을 재생성할 수 있습니다.
quote_df = pd.read_csv(StringIO(str_of_all), sep=',', names=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg')) quote_df.rename(columns={'A':'STK', 'B':'TOpen', ...}, inplace=True) quote_df['TVol'] = quote_df['TVol'] / TVOL_SCALE quote_df['TAmt'] = quote_df['TAmt'] / TAMT_SCALE quote_df['TDate'] = quote_df.TDate.map(lambda x: x[0:4]+x[5:7]+x[8:10])
위 내용은 Pandas의 설정WithCopyWarning을 이해하고 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!