python - settingwithcopywarning - Manera correcta de establecer el valor en una porción en pandas
python a value is trying to be set on a copy of a slice from a dataframe (1)
Esta es una advertencia muy común de los pandas. Esto significa que está escribiendo en una porción de copia, no los datos originales, por lo que es posible que no se aplique a las columnas originales debido a la confusa asignación encadenada. Por favor lea este post Tiene una discusión detallada sobre este SettingWithCopyWarning
. En tu caso creo que puedes intentarlo.
data.loc[data[''name''] == ''fred'', ''A''] = 0
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo lidiar con SettingWithCopyWarning en Pandas? 10 respuestas
Tengo un marco de datos de pandas: datos. tiene columnas ["nombre", ''A'', ''B'']
Lo que quiero hacer (y funciona) es:
d2 = data[data[''name''] == ''fred''] #This gives me multiple rows
d2[''A''] = 0
Esto establecerá la columna A en las filas de fred a 0. También he hecho:
indexes = d2.index
data[''A''][indexes] = 0
Sin embargo, ambos me dan la misma advertencia:
/Users/brianp/work/cyan/venv/lib/python2.7/site-packages/pandas/core/indexing.py:128: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
¿Cómo los pandas QUIEREN que haga esto?