Crie um novo DataFrame a partir de um quadro de dados existente em pandas?

Crie um novo DataFrame a partir de um quadro de dados existente em pandas?

Às vezes, precisamos copiar o existente Quadro de dados com dados e índices. No entanto, copiando o todo Quadro de dados também é outra maneira de haver um relacionamento direto criado entre o velho Quadro de dados e o novo Quadro de dados. Se fizermos alguma alteração no antigo Quadro de dados, também afetará o novo Quadro de dados ou vice-versa.

Neste artigo, vamos ver Pandas.Quadro de dados.cópia () método, que é usado para copy () dataframe.

Se queremos criar um novo Quadro de dados de um existente Quadro de dados, então podemos usar o método copy (). Então, neste artigo, vamos ver como podemos usar o Pandas DataFrame.cópia de() método para criar outro Quadro de dados de um existente Quadro de dados.

A sintaxe é dada abaixo:

Quadro de dados.cópia (Deep = True)

Na sintaxe acima, podemos ver que há profundo falso e verdadeiro.

Esses dois valores são muito importantes para usar o cópia () método. Vamos ver nos detalhes sobre esses dois valores.

Profundo (verdadeiro): Sempre que usamos o cópia () método, O profundo é verdadeiro por padrão. Este verdadeiro valor indica que precisamos copiar todos os dados e índices do Quadro de dados e crie um novo objeto. Suponha que façamos qualquer manipulação com o novo Quadro de dados, não afetará o velho DataFrame ou vice-versa, o que significa que não haverá conexão de relacionamento entre o antigo e o novo Quadro de dados, E ambos podem trabalhar de forma independente.

Profundo (falso): Quando mantemos o valor do profundo falso, o cópia () cria um novo objeto sem os dados e o índice. Ele criará uma referência aos dados e índice do DataFrame original. Se alguma manipulação no quadro de dados original, ele também afetará a cópia rasa de dados de dados ou vice-versa.

Exemplo 1:

Copie o DataFrame usando o Deep = true:

# python exemplo_1.py
importar pandas como PD
dados = 'tv_show_name': ['The Walking Dead', 'Merlin', 'Little Evil',
'Leista de dinheiro'],
'Tv_streaming_name': ['netflix', 'fx', 'Disney plus',
'Amazon Prime'],
'show_season': [4, 10, 4, 5],
'Ator Principal': ['Rick Grimes', 'Mordred', 'Karl C. Moleiro',
'Sergio Marquina']
df = pd.Quadro de dados.From_dict (dados)
Print ('DataFrame original')
Impressão (DF)
imprimir('_________________________________________________________')
dfcopy = df.cópia de()
Print ('DataFrame copiado')
Imprimir (DFCopy)

Linha 2: Nós importamos os pandas da biblioteca como PD. Aqui, PD significa que estamos importando a biblioteca de pandas com o novo nome de namespace chamado PD. Podemos usar o PD em vez de usar o nome completo dos pandas.

Linha 3 a 10: Criamos um ditado com algumas chaves e valores, em que os valores estão na lista. Depois de criar o dicionário, convertemos que ditam para um DataFrame (DF) usando o Quadro de dados.de_dict () método.

Linha 11 a 12: Estamos imprimindo nosso quadro de dados (DF), que mostra na saída abaixo.

Linha 14: Estamos criando uma cópia do DF (DataFrame) do existente DF (DataFrame). Aqui, não estamos usando nada = true, porque isso é por padrão. E, como mostrado em Deep = True, criará um novo objeto com todos os dados e índices do Quadro de dados, e não haverá uma relação direta entre a cópia Quadro de dados e o velho Quadro de dados.

Linha 15 a 16: Estamos imprimindo nossos copiados DataFrame (DFCopy), e a saída é mostrada abaixo:

Saída:

DataFrame original
Tv_show_name tv_streaming_name show_season ator
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney mais 4 Karl C. Moleiro
3 Leista de dinheiro Amazon Prime 5 Sergio Marquina
_________________________________________________________
Copiado DataFrame
Tv_show_name tv_streaming_name show_season ator
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney mais 4 Karl C. Moleiro
3 Leista de dinheiro Amazon Prime 5 Sergio Marquina
Processo terminado com o código de saída 0

Exemplo 2:

Neste exemplo, vamos manipular o velho Quadro de dados e verifique se isso afetará o DFCOPY DATAFRAME ou não. Aqui, estamos usando o Deep = True para copiar o DataFrame:

# python exemplo_2.py
importar pandas como PD
dados = 'tv_show_name': ['The Walking Dead', 'Merlin', 'Little Evil',
'Leista de dinheiro'],
'Tv_streaming_name': ['netflix', 'fx', 'Disney plus',
'Amazon Prime'],
'show_season': [4, 10, 4, 5],
'Ator Principal': ['Rick Grimes', 'Mordred', 'Karl C. Moleiro',
'Sergio Marquina']
df = pd.Quadro de dados.From_dict (dados)
Print ('DataFrame original')
Impressão (DF)
imprimir('_________________________________________________________')
dfcopy = df.cópia de()
Print ('DataFrame copiado')
Imprimir (DFCopy)
imprimir('_________________________________________________________')
Print ("************ Manipulação feita no DF original ***************")
# Agora, estamos fazendo manipulação de dados no DataFrame original
# Estamos mudando a coluna ('tv_show_name') valores para a, b, c, d
# Agora, veremos que isso afetará o DFCopy DataFrame ou não
df ['tv_show_name'] = df ['tv_show_name'].Substitua (['The Walking Dead',
'Merlin', 'Little Evil', 'Money Heist'], ['A', 'B', 'C', 'D']))
#Agora imprimindo DFCopy (Deep = True) e DF (Original) DataFrame
Print ('DataFrame original')
Impressão (DF)
Print ('DataFrame copiado')
Imprimir (DFCopy)

Linha 1 a 18: Explicações já são dadas no programa anterior no Exemplo 1.

Linha 23: Substituímos o original coluna df (dataframe) (['tv_show_name']) valores em ['a', 'b', 'c', 'd']. Agora, verificaremos se essa manipulação no DF original (DataFrame) afetará o DFCopy (Deep = True) ou não. Como já sabemos, não há uma relação direta entre quando usamos o Deep = true.

Linha 27 a 30: Nós imprimimos o original DF e cópia (DataFrame) Conforme mostrado na saída abaixo. A partir da saída, podemos confirmar que as alterações feitas no DataFrame original (DF) não têm efeito na cópia (dataframe):

Saída:

DataFrame original
Tv_show_name tv_streaming_name show_season ator
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney mais 4 Karl C. Moleiro
3 Leista de dinheiro Amazon Prime 5 Sergio Marquina
_________________________________________________________
Copiado DataFrame
Tv_show_name tv_streaming_name show_season ator
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney mais 4 Karl C. Moleiro
3 Leista de dinheiro Amazon Prime 5 Sergio Marquina
_________________________________________________________
************ Manipulação feita no df original ***************
DataFrame original
Tv_show_name tv_streaming_name show_season ator
0 a Netflix 4 Rick Grimes
1 b fx 10 mordred
2 C Disney mais 4 Karl C. Moleiro
3 D Amazon Prime 5 Sergio Marquina
Copiado DataFrame
Tv_show_name tv_streaming_name show_season ator
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney mais 4 Karl C. Moleiro
3 Leista de dinheiro Amazon Prime 5 Sergio Marquina

A partir do Exemplo 2 acima, podemos confirmar que Deep = True Valor quando definido, o recém -criado Quadro de dados do existente Quadro de dados não tem relacionamento direto e pode realizar manipulação sem se afetar.

Exemplo 3:

Neste exemplo, vamos manipular o velho Quadro de dados e verifique se isso afetará o DFCOPY DATAFRAME ou não. Aqui, estamos usando o Deep = False para copiar o Quadro de dados:

# python exemplo_3.py
importar pandas como PD
dados = 'tv_show_name': ['The Walking Dead', 'Merlin', 'Little Evil',
'Leista de dinheiro'],
'Tv_streaming_name': ['netflix', 'fx', 'Disney plus',
'Amazon Prime'],
'show_season': [4, 10, 4, 5],
'Ator Principal': ['Rick Grimes', 'Mordred', 'Karl C. Moleiro',
'Sergio Marquina']
df = pd.Quadro de dados.From_dict (dados)
Print ('DataFrame original')
Impressão (DF)
imprimir('_________________________________________________________')
dfcopy = df.cópia (Deep = false)
Print ('DataFrame copiado')
Imprimir (DFCopy)
imprimir('_________________________________________________________')
# Agora, estamos fazendo manipulação de dados no DataFrame original
# Estamos mudando a coluna ('tv_show_name') valores para a, b, c, d
# Agora, veremos que isso afetará o DFCopy DataFrame ou não
df ['tv_show_name'] = df ['tv_show_name'].Substitua (['The Walking Dead',
'Merlin', 'Little Evil', 'Money Heist'], ['A', 'B', 'C', 'D']))
#Agora imprimir DFCopy (Deep = False) e DF (Original) DataFrame
imprimir('_________________________________________________________')
Print ('DataFrame copiado')
Imprimir (DFCopy)
Print ('DataFrame original')
Impressão (DF)

Linha 1 a 18: Explicações já são dadas no programa do Exemplo 1. A única mudança foi feita na linha não. 15. Agora, estamos usando o Deep = False em vez de Deep = True.

Linha 23: Substituímos o original coluna df (dataframe) (['tv_show_name']) valores em ['a', 'b', 'c', 'd']. Agora, verificaremos se essa manipulação no DF original (DataFrame) afetará o DFCOPY (Deep = False) ou não. Como já sabemos, há uma relação direta entre quando usamos o Deep = False.

Linha 27 a 30: Imprimos o DF e a cópia originais (Quadro de dados) como mostrado na saída abaixo. A partir da saída, podemos confirmar que as alterações feitas no DataFrame original (DF) têm um efeito na cópia (dataframe). Os valores da coluna (['Tv_show_name']) também muda no quadro de dados de cópia.

Saída:

DataFrame original
Tv_show_name tv_streaming_name show_season ator
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney mais 4 Karl C. Moleiro
3 Leista de dinheiro Amazon Prime 5 Sergio Marquina
_________________________________________________________
Copiado DataFrame
Tv_show_name tv_streaming_name show_season ator
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney mais 4 Karl C. Moleiro
3 Leista de dinheiro Amazon Prime 5 Sergio Marquina
_________________________________________________________
_________________________________________________________
Copiado DataFrame
Tv_show_name tv_streaming_name show_season ator
0 a Netflix 4 Rick Grimes
1 b fx 10 mordred
2 C Disney mais 4 Karl C. Moleiro
3 D Amazon Prime 5 Sergio Marquina
DataFrame original
Tv_show_name tv_streaming_name show_season ator
0 a Netflix 4 Rick Grimes
1 b fx 10 mordred
2 C Disney mais 4 Karl C. Moleiro
3 D Amazon Prime 5 Sergio Marquina

Exemplo_4:

Copie o existente Quadro de dados Usando o operador de atribuição, que tem o mesmo problema de relacionamento direto como profundo = falso:

# python exemplo_4.py
importar pandas como PD
dados = 'tv_show_name': ['The Walking Dead', 'Merlin', 'Little Evil',
'Leista de dinheiro'],
'Tv_streaming_name': ['netflix', 'fx', 'Disney plus',
'Amazon Prime'],
'show_season': [4, 10, 4, 5],
'Ator Principal': ['Rick Grimes', 'Mordred', 'Karl C. Moleiro',
'Sergio Marquina']
df = pd.Quadro de dados.From_dict (dados)
Print ('DataFrame original')
Impressão (DF)
imprimir('_________________________________________________________')
dfcopy = df
Print ('DataFrame copiado')
Imprimir (DFCopy)
imprimir('_________________________________________________________')
# Agora, estamos fazendo manipulação de dados no DataFrame original
# Estamos mudando a coluna ('tv_show_name') valores para a, b, c, d
# Agora, veremos que isso afetará o DFCopy DataFrame ou não
df ['tv_show_name'] = df ['tv_show_name'].Substitua (['The Walking Dead',
'Merlin', 'Little Evil', 'Money Heist'], ['A', 'B', 'C', 'D']))
#Agora imprimindo o DFCOPY e o DF (original) DataFrame
imprimir('_________________________________________________________')
Print ('DataFrame copiado')
Imprimir (DFCopy)
Print ('DataFrame original')
Impressão (DF)

Linha 15: No programa do programa acima, o exemplo, direcionamos o Quadro de dados para outra variável sem usar o método copy (). Mas isso também cria uma relação direta entre o original Quadro de dados e o copiado Quadro de dados Como o Deep = False. A saída a seguir mostra que, se mudarmos alguma coisa no original Quadro de dados, então também afetará os copiados Quadro de dados ou vice-versa:

Saída:

DataFrame original
Tv_show_name tv_streaming_name show_season ator
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney mais 4 Karl C. Moleiro
3 Leista de dinheiro Amazon Prime 5 Sergio Marquina
_________________________________________________________
Copiado DataFrame
Tv_show_name tv_streaming_name show_season ator
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney mais 4 Karl C. Moleiro
3 Leista de dinheiro Amazon Prime 5 Sergio Marquina
_________________________________________________________
_________________________________________________________
Copiado DataFrame
Tv_show_name tv_streaming_name show_season ator
0 a Netflix 4 Rick Grimes
1 b fx 10 mordred
2 C Disney mais 4 Karl C. Moleiro
3 D Amazon Prime 5 Sergio Marquina
DataFrame original
Tv_show_name tv_streaming_name show_season ator
0 a Netflix 4 Rick Grimes
1 b fx 10 mordred
2 C Disney mais 4 Karl C. Moleiro
3 D Amazon Prime 5 Sergio Marquina

Conclusão:

Neste artigo, vimos a maneira correta de copiar o existente Quadro de dados, E isso criará um novo objeto com dados e índices. Como vimos, quando mantivermos o valor profundo falso, ele criará uma referência aos dados e índices para a nova cópia Quadro de dados. Portanto, copie usando o operador de atribuição também funciona da mesma maneira (Deep = False), como já vimos neste artigo com a ajuda de um exemplo.

Às vezes precisamos apenas de algumas das colunas para copiar do Quadro de dados, não o todo. Em seguida, podemos usar o seguinte método, que é semelhante à cópia (Deep = true), mas com o nome das colunas:

new_df = Old_df [['a', 'b', 'c']].cópia de()

Tome cuidado. Se você tiver apenas uma coluna, deve usar suportes quadrados duplos. Caso contrário, ele criará uma série, não um Quadro de dados.

new_df = Old_df [['a']].cópia de()

O código deste artigo está disponível no link do GitHub:

https: // github.com/shekharpandey89/pandas-dataframe-copy-metod