python - Pandas: SettingWithCopyWarning:
(2)
Intenté el siguiente código para convertir una columna a "fecha":
df.[''DATE''] = pd.to_datetime(df[''DATE''])
o
df.DATE = pd.to_datetime(df.DATE)
pero me sale el siguiente error:
/Users/xyz/anaconda3/envs/sensor/lib/python3.6/site-packages/pandas/core/indexing.py:517: SettingWithCopyWarning: se está intentando establecer un valor en una copia de un segmento de un DataFrame. Intente usar .loc [row_indexer, col_indexer] = value en su lugar
Consulte las advertencias en la documentación: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy self.obj [item] = s
Cambié el código a lo siguiente:
df.loc[:,''DATE''] = pd.to_datetime(df.loc[:,''DATE''])
pero sigo teniendo el mismo error.
lo mismo con esto
for i in df.index:
df.loc[i,''DATE''] = pd.to_datetime(df.loc[i,''DATE''])
El problema está en el código que no nos ha mostrado. En alguna parte, has hecho algo como esto:
df = other.loc[something]
Esa es la causa raíz de este mensaje de error.
.loc
asignar usando
.loc
o similar directamente en el DataFrame original:
other.loc[something, ''DATE''] = whatever
Necesita agregar
copy
:
df = data.loc[data.ID == 79]
a:
df = data.loc[data.ID == 79].copy()
Si modifica los valores en
df
más adelante, encontrará que las modificaciones no se propagan a los datos originales (
data
) y que Pandas sí advierte.