Panda's: maak een nieuwe kolom met meerdere if else-voorwaarden
U kunt de volgende syntaxis gebruiken om een nieuwe kolom in een Panda DataFrame te maken met behulp van meerdere if else-voorwaarden:
#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)
In dit specifieke voorbeeld wordt een kolom gemaakt met de naam new_column waarvan de waarden zijn gebaseerd op de waarden van column1 en column2 in het DataFrame.
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: Maak een nieuwe kolom met meerdere If Else-voorwaarden in Panda’s
Stel dat we het volgende panda’s DataFrame hebben dat informatie bevat over verschillende basketbalspelers:
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
Laten we nu zeggen dat we een nieuwe kolom willen maken met de naam klasse , waarin elke speler in een van de volgende vier groepen wordt ingedeeld:
- Slecht_A als het team A is en < 20 punten heeft
- Goed_A als het team A is en ≥ 20 punten heeft
- Slecht_B als het team B is en < 20 punten heeft
- Goed_B als het team B is en ≥ 20 punten heeft
We kunnen hiervoor de volgende syntaxis gebruiken:
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
De nieuwe kolom genaamd klasse geeft de rangschikking van elke speler weer op basis van de waarden in de team- en puntenkolommen .
Opmerking : u kunt hier de volledige documentatie voor de NumPy select()- functie vinden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in panda’s kunt uitvoeren:
Panda’s: hoe u een Booleaanse kolom maakt op basis van een voorwaarde
Panda’s: waarden tellen in een kolom met voorwaarde
Panda’s: Groupby gebruiken en voorwaardelijk tellen