Cree un nuevo marco de datos a partir de un marco de datos existente en Pandas?

Cree un nuevo marco de datos a partir de un marco de datos existente en Pandas?

A veces, necesitamos copiar el existente Marco de datos con datos e índices. Sin embargo, copiar todo Marco de datos también es otra forma de que haya una relación directa creada entre la vieja Marco de datos y el nuevo Marco de datos. Si hacemos algún cambio en el viejo Marco de datos, También afectará el nuevo Marco de datos o viceversa.

En este artículo, vamos a ver pandas.Marco de datos.método copy (), que se usa para Copy () DataFrame.

Si queremos crear un nuevo Marco de datos de un existente Marco de datos, Entonces podemos usar el método copy (). Entonces, en este artículo, vamos a ver cómo podemos usar el Pandas DataFrame.Copiar() Método para crear otro Marco de datos de un existente Marco de datos.

La sintaxis se da a continuación:

Marco de datos.Copiar (profundo = verdadero)

En la sintaxis anterior, podemos ver que hay profundo falso y verdadero.

Estos dos valores son muy importantes para usar el método copy (). Veamos en los detalles sobre estos dos valores.

Profundo (verdadero): Siempre que usamos el método copy (), La profunda es verdadera de forma predeterminada. Este verdadero valor indica que tenemos que copiar todos los datos e índices del existente Marco de datos y crear un nuevo objeto. Supongamos que hacemos cualquier manipulación a la nueva Marco de datos, no afectará al viejo DataFrame o viceversa, lo que significa que no habrá una conexión de relación entre el viejo y el nuevo Marco de datos, Y ambos pueden trabajar de forma independiente.

Profundo (falso): Cuando mantenemos el valor del falso profundo, entonces la copia () crea un nuevo objeto sin los datos y el índice. Creará una referencia a los datos y el índice del marco de datos original. Si alguna manipulación del DataFrame original, también afectará la copia de DataFrame o el viceversa.

Ejemplo 1:

Copie el DataFrame utilizando el profundo = True:

# Python Ejemplo_1.py
importar pandas como PD
data = 'tv_show_name': ['The Walking Dead', 'Merlin', 'Little Evil',
'Money Heist'],
'Tv_streaming_name': ['netflix', 'fx', 'Disney Plus',
'Amazon Prime'],
'show_sason': [4, 10, 4, 5],
'Actor principal': ['Rick Grimes', 'Mordred', 'Karl C. Molinero',
'Sergio Marquina']
DF = PD.Marco de datos.from_dict (datos)
Imprimir ('DataFrame original')
Imprimir (DF)
imprimir('_________________________________________________________')
dfcopy = df.Copiar()
Imprimir ('Copied DataFrame')
Imprimir (dfcopy)

Línea 2: Importamos los pandas de la biblioteca como PD. Aquí, PD significa que estamos importando la biblioteca Pandas con el nuevo nombre de espacio de nombres llamado PD. Podemos usar el PD en lugar de usar el nombre completo de Pandas.

Línea 3 a 10: Creamos un dict con algunas claves y valores, en el que los valores están en la lista. Después de crear el diccionario, convertimos ese dict a un DataFrame (DF) utilizando el Marco de datos.from_dict () método.

Línea 11 a 12: Estamos imprimiendo nuestro DataFrame (DF), que se muestra en la salida a continuación.

Línea 14: Estamos creando una copia del DF (DataFrame) del existente DF (DataFrame). Aquí, no estamos usando ningún profundo = verdadero porque eso es por defecto. Y, como se muestra en Deep = True, creará un nuevo objeto con todos los datos e índices de los existentes Marco de datos, y no habrá una relación directa entre la copia Marco de datos y el viejo Marco de datos.

Línea 15 a 16: Estamos imprimiendo nuestro copiado DataFrame (DFCOPY), y la salida se muestra a continuación:

Producción:

Marco de datos original
TV_SHOW_NAME TV_STREAMING_NAME SHOW_SEAUNTY Actor principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlín FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Molinero
3 dinero
_____________________________________________________
Marco de datos copiado
TV_SHOW_NAME TV_STREAMING_NAME SHOW_SEAUNTY Actor principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlín FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Molinero
3 dinero
Proceso terminado con el código de salida 0

Ejemplo 2:

En este ejemplo, vamos a manipular el viejo Marco de datos y verifique si afectará el DfCopy DataFrame O no. Aquí, estamos utilizando el profundo = verdadero para copiar DataFrame:

# Python Ejemplo_2.py
importar pandas como PD
data = 'tv_show_name': ['The Walking Dead', 'Merlin', 'Little Evil',
'Money Heist'],
'Tv_streaming_name': ['netflix', 'fx', 'Disney Plus',
'Amazon Prime'],
'show_sason': [4, 10, 4, 5],
'Actor principal': ['Rick Grimes', 'Mordred', 'Karl C. Molinero',
'Sergio Marquina']
DF = PD.Marco de datos.from_dict (datos)
Imprimir ('DataFrame original')
Imprimir (DF)
imprimir('_________________________________________________________')
dfcopy = df.Copiar()
Imprimir ('Copied DataFrame')
Imprimir (dfcopy)
imprimir('_________________________________________________________')
Imprimir ("************ Manipulación realizada en el DF original ***************")
# Ahora, estamos haciendo manipulación de datos en el marco de datos original
# Estamos cambiando los valores de columna ('TV_SHOW_NAME') a A, B, C, D
# Ahora, veremos que esto afectará a DFCopy DataFrame o no
df ['TV_SHOW_NAME'] = DF ['TV_SHOW_NAME'].Reemplazar (['The Walking Dead',
'Merlín', 'Little Evil', 'Money Heist'], ['A', 'b', 'c', 'd'])
#NOW IMPRESIÓN Tanto dfCopy (profundo = true) como df (original) DataFrame
Imprimir ('DataFrame original')
Imprimir (DF)
Imprimir ('Copied DataFrame')
Imprimir (dfcopy)

Línea 1 a 18: Las explicaciones ya se dan en el programa anterior en el Ejemplo 1.

Línea 23: Reemplazamos el original DF (DataFrame) columna (['tv_show_name']) valores en ['a', 'b', 'c', 'd']. Ahora, verificaremos si esta manipulación en el DF original (DataFrame) afectará el DFCopy (profundo = verdadero) o no. Como ya sabemos, no hay una relación directa entre cuando usamos el profundo = verdadero.

Línea 27 a 30: Imprimimos el original DF y copia (DataFrame) Como se muestra en la salida a continuación. Desde la salida, podemos confirmar que los cambios realizados en el DataFrame (DF) original no tienen ningún efecto en la copia (DataFrame):

Producción:

Marco de datos original
TV_SHOW_NAME TV_STREAMING_NAME SHOW_SEAUNTY Actor principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlín FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Molinero
3 dinero
_____________________________________________________
Marco de datos copiado
TV_SHOW_NAME TV_STREAMING_NAME SHOW_SEAUNTY Actor principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlín FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Molinero
3 dinero
_____________________________________________________
************** Manipulación hecha en el DF original ********************
Marco de datos original
TV_SHOW_NAME TV_STREAMING_NAME SHOW_SEAUNTY Actor principal
0 A Netflix 4 Rick Grimes
1 B FX 10 Mordred
2 C Disney Plus 4 Karl C. Molinero
3 d Amazon Prime 5 Sergio Marquina
Marco de datos copiado
TV_SHOW_NAME TV_STREAMING_NAME SHOW_SEAUNTY Actor principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlín FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Molinero
3 dinero

En el ejemplo 2 anterior, podemos confirmar que el valor profundo = verdadero cuando se establece, el recién creado Marco de datos del existente Marco de datos no tiene una relación directa y puede realizar la manipulación sin afectarse entre sí.

Ejemplo 3:

En este ejemplo, vamos a manipular el viejo Marco de datos y verifique si afectará el DfCopy DataFrame O no. Aquí, estamos usando el profundo = falso para copiar el Marco de datos:

# Python Ejemplo_3.py
importar pandas como PD
data = 'tv_show_name': ['The Walking Dead', 'Merlin', 'Little Evil',
'Money Heist'],
'Tv_streaming_name': ['netflix', 'fx', 'Disney Plus',
'Amazon Prime'],
'show_sason': [4, 10, 4, 5],
'Actor principal': ['Rick Grimes', 'Mordred', 'Karl C. Molinero',
'Sergio Marquina']
DF = PD.Marco de datos.from_dict (datos)
Imprimir ('DataFrame original')
Imprimir (DF)
imprimir('_________________________________________________________')
dfcopy = df.Copiar (profundo = falso)
Imprimir ('Copied DataFrame')
Imprimir (dfcopy)
imprimir('_________________________________________________________')
# Ahora, estamos haciendo manipulación de datos en el marco de datos original
# Estamos cambiando los valores de columna ('TV_SHOW_NAME') a A, B, C, D
# Ahora, veremos que esto afectará a DFCopy DataFrame o no
df ['TV_SHOW_NAME'] = DF ['TV_SHOW_NAME'].Reemplazar (['The Walking Dead',
'Merlín', 'Little Evil', 'Money Heist'], ['A', 'b', 'c', 'd'])
#NOW IMPRESIÓN Tanto dfCopy (profundo = falso) como df (original) DataFrame
imprimir('_________________________________________________________')
Imprimir ('Copied DataFrame')
Imprimir (dfcopy)
Imprimir ('DataFrame original')
Imprimir (DF)

Línea 1 a 18: Las explicaciones ya se dan en el programa del ejemplo 1. El único cambio se realizó en la línea no. 15. Ahora, estamos usando profundo = falso en su lugar profundo = verdadero.

Línea 23: Reemplazamos el original DF (DataFrame) columna (['tv_show_name']) valores en ['a', 'b', 'c', 'd']. Ahora, verificaremos si esta manipulación en el DF original (DataFrame) afectará el DFCopy (profundo = falso) o no. Como ya sabemos, hay una relación directa entre cuando usamos el profundo = falso.

Línea 27 a 30: Imprimimos el DF original y la copia (Marco de datos) como se muestra en la salida a continuación. Desde la salida, podemos confirmar que los cambios realizados en el DataFrame (DF) original tienen un efecto en la copia (DataFrame). Los valores de la columna (['TV_SHOW_NAME']) Cambie también en la copia DataFrame.

Producción:

Marco de datos original
TV_SHOW_NAME TV_STREAMING_NAME SHOW_SEAUNTY Actor principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlín FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Molinero
3 dinero
_____________________________________________________
Marco de datos copiado
TV_SHOW_NAME TV_STREAMING_NAME SHOW_SEAUNTY Actor principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlín FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Molinero
3 dinero
_____________________________________________________
_____________________________________________________
Marco de datos copiado
TV_SHOW_NAME TV_STREAMING_NAME SHOW_SEAUNTY Actor principal
0 A Netflix 4 Rick Grimes
1 B FX 10 Mordred
2 C Disney Plus 4 Karl C. Molinero
3 d Amazon Prime 5 Sergio Marquina
Marco de datos original
TV_SHOW_NAME TV_STREAMING_NAME SHOW_SEAUNTY Actor principal
0 A Netflix 4 Rick Grimes
1 B FX 10 Mordred
2 C Disney Plus 4 Karl C. Molinero
3 d Amazon Prime 5 Sergio Marquina

Ejemplo_4:

Copiar el existente Marco de datos Uso del operador de asignación, que tiene el mismo problema de relación directa como profundo = falso:

# Python Ejemplo_4.py
importar pandas como PD
data = 'tv_show_name': ['The Walking Dead', 'Merlin', 'Little Evil',
'Money Heist'],
'Tv_streaming_name': ['netflix', 'fx', 'Disney Plus',
'Amazon Prime'],
'show_sason': [4, 10, 4, 5],
'Actor principal': ['Rick Grimes', 'Mordred', 'Karl C. Molinero',
'Sergio Marquina']
DF = PD.Marco de datos.from_dict (datos)
Imprimir ('DataFrame original')
Imprimir (DF)
imprimir('_________________________________________________________')
dfcopy = df
Imprimir ('Copied DataFrame')
Imprimir (dfcopy)
imprimir('_________________________________________________________')
# Ahora, estamos haciendo manipulación de datos en el marco de datos original
# Estamos cambiando los valores de columna ('TV_SHOW_NAME') a A, B, C, D
# Ahora, veremos que esto afectará a DFCopy DataFrame o no
df ['TV_SHOW_NAME'] = DF ['TV_SHOW_NAME'].Reemplazar (['The Walking Dead',
'Merlín', 'Little Evil', 'Money Heist'], ['A', 'b', 'c', 'd'])
#NOW Impresión de DFCOPY y DF (original) DataFrame
imprimir('_________________________________________________________')
Imprimir ('Copied DataFrame')
Imprimir (dfcopy)
Imprimir ('DataFrame original')
Imprimir (DF)

Línea 15: En el programa anterior Ejemplo 4, dirigimos el Marco de datos a otra variable sin usar el método copy (). Pero esto también crea una relación directa entre el original Marco de datos y el copiado Marco de datos Como el profundo = falso. La siguiente salida muestra que si cambiamos algo en el original Marco de datos, entonces también afectará al copiado Marco de datos o viceversa:

Producción:

Marco de datos original
TV_SHOW_NAME TV_STREAMING_NAME SHOW_SEAUNTY Actor principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlín FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Molinero
3 dinero
_____________________________________________________
Marco de datos copiado
TV_SHOW_NAME TV_STREAMING_NAME SHOW_SEAUNTY Actor principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlín FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Molinero
3 dinero
_____________________________________________________
_____________________________________________________
Marco de datos copiado
TV_SHOW_NAME TV_STREAMING_NAME SHOW_SEAUNTY Actor principal
0 A Netflix 4 Rick Grimes
1 B FX 10 Mordred
2 C Disney Plus 4 Karl C. Molinero
3 d Amazon Prime 5 Sergio Marquina
Marco de datos original
TV_SHOW_NAME TV_STREAMING_NAME SHOW_SEAUNTY Actor principal
0 A Netflix 4 Rick Grimes
1 B FX 10 Mordred
2 C Disney Plus 4 Karl C. Molinero
3 d Amazon Prime 5 Sergio Marquina

Conclusión:

En este artículo, hemos visto la forma correcta de copiar el Marco de datos, y hacer esto creará un nuevo objeto con datos e índices. Como hemos visto, cuando mantenemos el valor profundo falso, creará una referencia a los datos e índices a la nueva copia Marco de datos. Entonces, la copia usando el operador de asignación también funciona de la misma manera (profunda = falso), como ya hemos visto en este artículo con la ayuda de un ejemplo.

A veces solo necesitamos algunas de las columnas para copiar del existente Marco de datos, no el todo. Luego podemos usar el siguiente método, que es similar a la copia (profunda = true) pero con el nombre de las columnas:

new_df = old_df [['a', 'b', 'c']].Copiar()

Ten cuidado. Si solo tiene una columna, entonces debe usar soportes cuadrados dobles. De lo contrario, creará una serie, no una Marco de datos.

new_df = old_df [['a']].Copiar()

El código de este artículo está disponible en el enlace GitHub:

https: // github.com/shekharpandey89/pandas-dataframe-copy-método