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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert