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