2017-01-09 1 views
0

pandas 데이터 프레임의 열에 누락 된 값을 업데이트하려고 시도 중이지만 방법에 대한 경고가 표시됩니다. 제안으로 변경하면 여전히 동일한 오류가 발생합니다. 팬더가 소리를 지르지 않게하려면 어떻게해야합니까?pandas 데이터 프레임을 올바르게 업데이트하십시오.

첫 번째 시도 :

df['column1'].fillna(inplace=True, value='Low') 

먼저 응답 :

/usr/local/bin/python3.5/site-packages/pandas/core/indexing.py:3295: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame. 
Try using .loc[row_indexer,col_indexer] = value instead 

두 번째 시도 :

df.loc[df['column1'].isnull(), 'column1'] = 'Low' 

두 번째 응답 :

/usr/local/bin/python3.5/site-packages/pandas/core/generic.py:476: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame 
+0

'.replace() '를 사용해 보셨나요? 기본적으로 :'numpy as np; df.replace ({ 'column1 : {np.nan :'Low '}'}, inplace = True)'? – Abdou

+1

어떻게'df'를 얻었습니까? 'df' 자체가 다른 DataFrame을 잘라서 생성되었으므로 경고 메시지가 표시 될 수 있습니다. – BrenBarn

+0

@BrenBarn = big_df의 하위 집합에서 df를 빌드합니다. 'df = big_df [big_df [ 'columnA'] == 'X']' – mikebmassey

답변

1

귀하의 의견을 바탕으로 big_df을 자르는 방법으로 df 자체가 생성되는 것 같습니다. 이것이 경고의 이유입니다. df을 수정하면 그것이 포함되어있는 big_df에 영향을 미치는지에 대한 불확실성이 있으므로 DataFrame 조각을 가져 와서 수정하려고 할 때마다이 경고 메시지가 나타날 수 있습니다.

big_df에 대한 영향을 염려하지 않으면 경고를 무시할 수 있습니다. 다른 해결책은 df을 만들 때 .copy()을 사용하여 원래의 더 큰 데이터 프레임과 연결되지 않은 "방해가되지 않는"DataFrame을 확보하는 것입니다.

관련 문제