Python Pandas – Función DataFrame.copy()

Python es un excelente lenguaje para realizar análisis de datos, principalmente debido al fantástico ecosistema de paquetes de Python centrados en datos. Pandas es uno de esos paquetes y facilita mucho la importación y el análisis de datos.

Hay muchas formas de copiar DataFrame en pandas. La primera forma es una forma simple de asignar un objeto de marco de datos a una variable, pero esto tiene algunos inconvenientes.

Sintaxis: DataFrame.copydeep=True

Cuando deep=True (predeterminado), se creará un nuevo objeto con una copia de los datos e índices del objeto que llama. Las modificaciones a los datos o índices de la copia no se reflejarán en el objeto original (ver notas a continuación).

Cuando deep=False, se creará un nuevo objeto sin copiar los datos o el índice del objeto que llama (solo se copian las referencias a los datos y al índice). Cualquier cambio en los datos del original se reflejará en la copia superficial (y viceversa).

Paso 1) Primero hagamos un marco de datos ficticio, que usaremos para nuestra ilustración

Paso 2) Asigne ese objeto de marco de datos a una variable

Paso 3) Realice cambios en el marco de datos original para ver si hay alguna diferencia en la variable copiada

Python3

import pandas as pd
  
#Create Series
s = pd.Series([3,4,5],['earth','mars','jupiter'])
k = pd.Series([1,2,3],['earth','mars','jupiter'])
  
#Create DataFrame df from two series
df = pd.DataFrame({'mass':s,'diameter':k})
  
df

Producción:

Marco de datos ficticio df

Ahora, asignemos el marco de datos df a una variable y realicemos cambios:

Python3

#Assign df to variable_copy
variable_copy = df
  
print(variable_copy) 
#Update the value of mass of earth in original dataframe
df['mass']['earth']=8
  
print(variable_copy)

Producción:

Aquí, podemos ver que si cambiamos los valores en el marco de datos original, los datos en la variable copiada también cambian. Para superar esto, usamos DataFrame.copy() 

Veamos esto, con ejemplos cuando deep=True(default ):

Python3

res = df.copy(deep=True)
print(res)

Producción:

Publicación traducida automáticamente

Artículo escrito por svrrrsvr y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *