python pandas

python - ''Se está intentando establecer un valor en una copia de un segmento de un DataFrame'' al usar ''iloc''



pandas (1)

Creo que necesitas una copy :

train = df.loc[df[''group''] != i].copy() test = df.loc[df[''group''] == i].copy()

Si modifica los valores en la test más adelante, encontrará que las modificaciones no se propagan a los datos originales ( df ) y que Pandas hace una advertencia.

Jupiter nootbook está devolviendo esta advertencia:

*C:/anaconda/lib/site-packages/pandas/core/indexing.py:337: 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

Consulte las advertencias en la documentación: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

self.obj[key] = _infer_fill_value(value) C:/anaconda/lib/site-packages/pandas/core/indexing.py:517: 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

Consulte las advertencias en la documentación: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

self.obj[item] = s*

Después de ejecutar el siguiente código:

def group_df(df,num): ln = len(df) rang = np.arange(ln) splt = np.array_split(rang,num) lst = [] finel_lst = [] for i,x in enumerate(splt): lst.append([i for x in range(len(x))]) for k in lst: for j in k: finel_lst.append(j) df[''group''] = finel_lst return df def KNN(dafra,folds,K,fi,target): df = group_df(dafra,folds) avarge_e = [] for i in range(folds): train = df.loc[df[''group''] != i] test = df.loc[df[''group''] == i] test.loc[:,''pred_price''] = np.nan test.loc[:,''rmse''] = np.nan print(test.columns) KNN(data,5,5,''GrLivArea'',''SalePrice'')

En el mensaje de error, se recomienda usar la indexación .loc cual hice, pero no ayudó. Por favor, ayúdame, ¿cuál es el problema? Revisé las preguntas relacionadas y leí la documentación, pero aún no la entiendo.