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