Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Em um DataFrame: copiar dados de uma coluna e colar em outra no python

Olá Pessoal

Estou evoluindo no Python praticando muito, gostaria de uma ajuda para solucionar esta dúvida.

Dentro de um dataframe apliquei o seguinte filtro: filtro_codigos_cfop = df2[df2['cfop_produto'].isin(codigos_cfop)] . A imagem abaixo apresenta uma parte do resultado do filtro aplicado no dataframe:

dados de um data frame

*Dúvida: qual comando posso utilizar para trocar os valores de uma coluna para outra (e vice-versa) dentro do dataframe? *

Importante: somente fazer a troca dos valores que resultaram do filtro realizado, sem alterar a estrutura dos dados do restante do dataframe.

Obrigado.

4 respostas
solução!

Oi Bartholomeo,

Não entendi bem o que você deseja. Você poderia escrever o resultado desejado?

É possível copiar uma coluna fazendo atribuição direta:

df['Copia'] = df['Original']

Dessa forma você pode tanto criar colunas novas como alterar colunas já existentes.

No seu DataFrame, por exemplo:

filtro_codigos_cfop['cnae_destino_div'] = filtro_codigos_cfop['cnae_origem_div']

Olá Erick

Obrigado pelo suporte e gentileza.

A imagem abaixo é parte de um filtro realizado com 48 mil linhas (de um dataframe com 500.000 observações):

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

O que desejo é inverter os valores entre as colunas deste filtro, para ter o seguinte resultado:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

A intenção é encontrar algum comando ou raciocínio para fazer direto no python, para fazer a inversão somente destes dados do dataframe que tem 500.000 observações.

Obrigado

Agora sim eu entendi

Em vez de fazer atribuição direta, é mais rápido simplesmente renomear as colunas:

df.rename(columns={"cnae_origem_div":"cnae_destino_div",
                   "cnae_origem_gp":"cnae_destino_gp",
                   "cnae_destino_div":"cnae_origem_div",
                   "cnae_destino_gp":"cnae_origem_gp"}, inplace=True)
df

(Obs: Seu DataFrame possui duas colunas com mesmo nome "cnae_origem_gp", estou assumindo que uma delas seria "cnae_destino_gp")

O código acima vai renomear as colunas, porém elas continuarão na mesma posição em que estavam. Caso você faça questão de reordenar as colunas no DataFrame:

df = df[['cnae_origem_div', 'cnae_origem_gp', 'uf_origem',
          'cnae_destino_div', 'cnae_destino_gp', 'uf_destino', 'cfop_produto']]
df

Olá Erick

Obrigado pelas orientações e com sua ajuda consegui compreender e encontrar uma solução para esta demanda.

Abraço