Python

Python Geral Básico Função NumPy lista Pandas funções Estruturas de decisão Intermediário Programação Orientada a Objetos tuplas dicionário Avançado OO

Eu tenho um DataFrame e consigo lê todas colunas. Porem gostaria de colocar celulas iguais na mesma linha e se não houver em uma coluna igual mas nas demais sim coloque um espaço em branco ou nan tanto faz.

exemplo:

coluna1        coluna2                coluna3      
   a                       b                           a      
   c                          a                         c      
   b                         h                          b      
       
       
reposta que quero: 
coluna1        coluna2                coluna3      
   a                       a                          a      
   c                          nan                        c      
   b                         b                          b      
nan                        h                        nan      
Foto de Lucas C.
Lucas perguntou há 2 anos

Sabe a resposta?

Ganhe 10 pts por resposta de qualidade
Responder dúvida
1 resposta
1
votos
1 usuário votou nessa resposta como útil.
Professor Otávio J.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 2 anos
Melhor resposta
Essa foi a melhor resposta, escolhida pelo autor da dúvida

Olá Lucas,

Se eu entendi bem, você não está preocupado em tratar os valores repetidos na mesma coluna, dessa forma, o código abaixo pode funcionar:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.array([['a', 'b', 'a'], ['c', 'a', 'c'], ['b',  'h', 'b']]), columns=['coluna1', 'coluna2', 'coluna3'])

valores_unicos = np.unique(df.values)
novas_linhas = []
for valor in valores_unicos:
    nova_linha = []
    for coluna in list(df.columns):
        nova_linha.append(valor if valor in list(df[coluna]) else np.NaN)
        
    novas_linhas.append(nova_linha)
    
df = pd.DataFrame(novas_linhas, columns=list(df.columns))

 

Uma breve explicação: inicialmente, pegamos todos os valores únicos do dataframe. Após, criamos cada linha inidividualmente dentro do primeiro for, e para criar a linha fazemos um novo loop pelas colunas. Talvez não a solução mais rápida, mas funciona pro seu exemplo.

Importante ver que isso talvez gere problemas se você tiver valores duplicados na mesma coluna, porém, não sabia qual o comportamento esperado nesse caso :) 

Envie uma dúvida gratuitamente

Envie sua primeira dúvida gratuitamente aqui no Tira-dúvidas Profes. Nossos professores particulares estão aqui para te ajudar.

Professores particulares de Python

+ Ver todos
Encontre professor particular para te ajudar nos estudos
R$ 40 / h
Otávio J.
Porto Alegre / RS
Otávio J.
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
Python - Geral Python - Intermediário Python - Programação Orientada a Objetos
Mestrado: Ciência da Computação/Inteligencia Artificial (Université de Bordeaux)
Professor de programação com 10 anos de experiência, ajudo desde o básico até o avançado. Especialista em automação e machine learning.
R$ 60 / h
César D.
Mogi Guaçu / SP
César D.
4,9 (810 avaliações)
Horas de aulas particulares ministradas 87 horas de aula
Tarefas resolvidas 995 tarefas resolvidas
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
Programação em Python NumPy Python - Geral Programação em Python Básico
Graduação: Matemática Aplicada e Computacional (Universidade Estadual de Campinas (UNICAMP))
Faça aulas de matemática, computação e programação em c, c++, java e python.
R$ 120 / h
Johny L.
Fortaleza / CE
Johny L.
4,3 (36 avaliações)
Horas de aulas particulares ministradas 94 horas de aula
Tarefas resolvidas 29 tarefas resolvidas
Identidade verificada
  • CPF verificado
  • E-mail verificado
Python - Intermediário Python - Programação Orientada a Objetos Python - tuplas
Graduação: Engenharia Civil (IFCE - Campus Fortaleza)
Professor da UFC - Aulas de estatística práticas e aplicadas ao mercado de trabalho além de acadêmico