Pandas: SettingWithCopyWarning:

Probé 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: un valor está intentando establecer una copia de una porción de un DataFrame. Intente usar .loc [row_indexer, col_indexer] = value en su lugar

Vea 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']) 

Necesita añadir 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 hace una advertencia.

El problema está en el código que no nos has mostrado. En algún lugar, has hecho algo como esto:

 df = other.loc[something] 

Esa es la causa raíz de este mensaje de error. .loc asignar utilizando .loc o similar directamente en el DataFrame original:

 other.loc[something, 'DATE'] = whatever