python pandas

python - Establecer valores en una copia de un segmento de un DataFrame



pandas (1)

Esta advertencia viene porque su dataframe x es una copia de un segmento. No es fácil saber por qué, pero tiene algo que ver con cómo ha llegado al estado actual.

Puede crear un dataframe adecuado a partir de x haciendo

x = x.copy()

Esto eliminará la advertencia, pero no es la forma correcta

Debería utilizar el método DataFrame.loc , como sugiere la advertencia, de esta manera:

x.loc[:,''Mass32s''] = pandas.rolling_mean(x.Mass32, 5).shift(-2)

Esta pregunta ya tiene una respuesta aquí:

Tengo un pequeño marco de datos, digamos este:

Mass32 Mass44 12 0.576703 0.496159 13 0.576658 0.495832 14 0.576703 0.495398 15 0.576587 0.494786 16 0.576616 0.494473 ...

Me gustaría tener una media Mass32 de la columna Mass32 , así que hago esto:

x[''Mass32s''] = pandas.rolling_mean(x.Mass32, 5).shift(-2)

Funciona ya que tengo una nueva columna llamada Mass32s que contiene lo que espero que contenga, pero también recibo el mensaje de advertencia:

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

Me pregunto si hay una mejor manera de hacerlo, especialmente para evitar recibir este mensaje de advertencia.