Pandas: como mesclar valores de múltiplas colunas em uma


Você pode usar os seguintes métodos para agrupar valores de várias colunas de um DataFrame do pandas em uma única coluna:

Método 1: mesclar valores por ordem de coluna padrão

 df[' coalesce '] = df. bfill (axis= 1 ). iloc [:, 0]

Método 2: mesclar valores usando uma ordem de coluna específica

 df[' coalesce '] = df[[' col3 ', ' col1 ', ' col2 ']]. bfill (axis= 1 ). iloc [:, 0]

Os exemplos a seguir mostram como usar cada método na prática com o seguinte DataFrame do pandas:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' points ': [np.nan, np.nan, 19, np.nan, 14],
                   ' assists ': [np.nan, 7, 7, 9, np.nan],
                   ' rebounds ': [3, 4, np.nan, np.nan, 6]})

#view DataFrame
print (df)

   points assists rebounds
0 NaN NaN 3.0
1 NaN 7.0 4.0
2 19.0 7.0 NaN
3 NaN 9.0 NaN
4 14.0 NaN 6.0

Método 1: mesclar valores por ordem de coluna padrão

O código a seguir mostra como mesclar os valores das colunas de pontos, assistências e rebotes em uma única coluna, usando o primeiro valor diferente de zero nas três colunas como o valor mesclado:

 #create new column that contains first non-null value from three existing columns 
df[' coalesce '] = df. bfill (axis= 1 ). iloc [:, 0]

#view updated DataFrame
print (df)

   points assists rebounds coalesce
0 NaN NaN 3.0 3.0
1 NaN 7.0 4.0 7.0
2 19.0 7.0 NaN 19.0
3 NaN 9.0 NaN 9.0
4 14.0 NaN 6.0 14.0

Veja como o valor na coluna de mesclagem foi escolhido:

  • Primeira linha: O primeiro valor diferente de zero foi 3.0 .
  • Segunda linha: O primeiro valor diferente de zero foi 7.0 .
  • Terceira linha: O primeiro valor diferente de zero foi 19.0 .
  • Quarta linha: O primeiro valor diferente de zero foi 9.0 .
  • Quinta linha: O primeiro valor diferente de zero foi 14.0 .

Método 2: mesclar valores usando uma ordem de coluna específica

O código a seguir mostra como mesclar os valores nas três colunas analisando as colunas na seguinte ordem: assistências, rebotes, pontos.

 #coalesce values in specific column order
df[' coalesce '] = df[[' assists ', ' rebounds ', ' points ']]. bfill (axis= 1 ). iloc [:, 0]

#view updated DataFrame
print (df)

   points assists rebounds coalesce
0 NaN NaN 3.0 3.0
1 NaN 7.0 4.0 7.0
2 19.0 7.0 NaN 7.0
3 NaN 9.0 NaN 9.0
4 14.0 NaN 6.0 6.0

Aqui está a lógica usada para decidir qual valor colocar na coluna de mesclagem :

  • Se o valor na coluna auxiliar não for zero, use esse valor.
  • Caso contrário, se o valor na coluna de rejeições não for zero, use esse valor.
  • Caso contrário, se o valor na coluna de pontos não for zero, use esse valor.

Nota : Você pode encontrar a documentação completa da função bfill() aqui .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em pandas:

Como combinar duas colunas no Pandas
Como somar colunas específicas no Pandas
Como classificar por múltiplas colunas no Pandas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *