Pandas: crie uma nova coluna usando várias condições if else


Você pode usar a seguinte sintaxe para criar uma nova coluna em um DataFrame do pandas usando várias condições if else:

 #define conditions
conditions = [
    (df[' column1 '] == ' A ') & (df[' column2 '] < 20 ),
    (df[' column1 '] == ' A ') & (df[' column2 '] >= 20 ),
    (df[' column1 '] == ' B ') & (df[' column2 '] < 20 ),
    (df[' column1 '] == ' B ') & (df[' column2 '] >= 20 )
]

#define results
results = [' result1 ', ' result2 ', ' result3 ', ' result4 ']

#create new column based on conditions in column1 and column2
df[' new_column '] = np. select (conditions, results)

Este exemplo específico cria uma coluna chamada new_column cujos valores são baseados nos valores de coluna1 e coluna2 no DataFrame.

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: Crie uma nova coluna usando múltiplas condições If Else no Pandas

Suponha que temos o seguinte DataFrame do pandas que contém informações sobre vários jogadores de basquete:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points ': [15, 18, 22, 24, 12, 17, 20, 28]})

#view DataFrame
print (df)

  team points
0 to 15
1 to 18
2 to 22
3 to 24
4 B 12
5 B 17
6 B 20
7 B 28

Agora digamos que queremos criar uma nova coluna chamada classe que classifica cada jogador em um dos quatro grupos a seguir:

  • Bad_A se a equipe for A e pontos <20
  • Good_A se a equipe for A e pontuar ≥ 20
  • Bad_B se o time for B e pontos < 20
  • Good_B se a equipe for B e pontuar ≥ 20

Podemos usar a seguinte sintaxe para fazer isso:

 import numpy as np

#define conditions
conditions = [
    (df[' team '] == ' A ') & (df[' points '] < 20 ),
    (df[' team '] == ' A ') & (df[' points '] >= 20 ),
    (df[' team '] == ' B ') & (df[' points '] < 20 ),
    (df[' team '] == ' B ') & (df[' points '] >= 20 )
]

#define results
results = [' Bad_A ', ' Good_A ', ' Bad_B ', ' Good_B ']

#create new column based on conditions in column1 and column2
df[' class '] = np. select (conditions, results)

#view updated DataFrame
print (df)

  team points class
0 A 15 Bad_A
1 A 18 Bad_A
2 A 22 Good_A
3 A 24 Good_A
4 B 12 Bad_B
5 B 17 Bad_B
6 B 20 Good_B
7 B 28 Good_B

A nova coluna chamada classe exibe a classificação de cada jogador com base nos valores das colunas equipe e pontos .

Nota : Você pode encontrar a documentação completa para a função select() do NumPy aqui .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em pandas:

Pandas: como criar uma coluna booleana com base na condição
Pandas: Como contar valores em uma coluna com condição
Pandas: como usar Groupby e contar condicionalmente

Add a Comment

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