- Método 1: Agrupar valores por ordem de coluna predefinida
- Método 2: Coalescer valores usando uma ordem de coluna específica
Pode utilizar os seguintes métodos para agrupar os valores de várias colunas de um DataFrame pandas numa única coluna:
Método 1: Agrupar valores por ordem de coluna predefinida
df[' coalesce '] = df. bfill (axis= 1 ). iloc [:, 0]
Método 2: Coalescer valores usando uma ordem de coluna específica
df[' coalesce '] = df[[' col3 ', ' col1 ', ' col2 ']]. bfill (axis= 1 ). iloc [:, 0]
Os exemplos seguintes mostram como utilizar cada método na prática com o seguinte DataFrame do pandas:
import pandas as pd import numpy as np #criar DataFrame 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]}) #visualizar 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: Agrupar valores por ordem de coluna predefinida
O código a seguir mostra como agrupar os valores nas colunas de pontos, assistências e rebotes em uma coluna, usando o primeiro valor não nulo nas três colunas como o valor agrupado:
#criar uma nova coluna que contém o primeiro valor não nulo de três colunas existentes df[' coalesce '] = df. bfill (axis= 1 ). iloc [:, 0] #visualizar DataFrame atualizado print (df) pontos 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
Eis como o valor no coalescer coluna foi selecionada:
- Primeira linha: O primeiro valor não nulo foi 3.0 .
- Segunda linha: O primeiro valor não nulo foi 7.0 .
- Terceira linha: O primeiro valor não nulo foi 19.0 .
- Quarta linha: O primeiro valor não nulo foi 9.0 .
- Quinta linha: O primeiro valor não nulo foi 14.0 .
Método 2: Coalescer valores usando uma ordem de coluna específica
O código seguinte mostra como combinar os valores nas três colunas, analisando as colunas pela seguinte ordem: assistências, ressaltos, pontos.
#coalesce os valores por uma ordem específica das colunas df[' coalesce '] = df[[[' assistências ', ' ressaltos ', ' pontos ']]. 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
Eis a lógica que foi utilizada para decidir qual o valor a colocar no coalescer coluna:
- Se o valor no campo assistências não é nula, então utiliza esse valor.
- Caso contrário, se o valor no ressaltos não é nula, então utiliza esse valor.
- Caso contrário, se o valor no pontos não é nula, então utiliza esse valor.
Nota : Pode encontrar a documentação completa para o bfill() função aqui.