Panda's: hoe u waarden uit meerdere kolommen samenvoegt tot één
U kunt de volgende methoden gebruiken om waarden uit meerdere kolommen van een pandas DataFrame in één kolom te groeperen:
Methode 1: Waarden samenvoegen in standaard kolomvolgorde
df[' coalesce '] = df. bfill (axis= 1 ). iloc [:, 0]
Methode 2: Waarden samenvoegen met behulp van een specifieke kolomvolgorde
df[' coalesce '] = df[[' col3 ', ' col1 ', ' col2 ']]. bfill (axis= 1 ). iloc [:, 0]
De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken met de volgende panda’s DataFrame:
import pandas as pd import numpy as np #createDataFrame 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]}) #view 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
Methode 1: Waarden samenvoegen in standaard kolomvolgorde
De volgende code laat zien hoe u de waarden uit de kolommen punten, assists en rebounds kunt samenvoegen tot één enkele kolom, waarbij u de eerste waarde die niet nul is in de drie kolommen als samengevoegde waarde gebruikt:
#create new column that contains first non-null value from three existing columns
df[' coalesce '] = df. 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 19.0
3 NaN 9.0 NaN 9.0
4 14.0 NaN 6.0 14.0
Hier ziet u hoe de waarde in de samenvoegkolom werd gekozen:
- Eerste regel: De eerste waarde die niet nul is, was 3.0 .
- Tweede regel: De eerste waarde die niet nul is, was 7.0 .
- Derde regel: De eerste waarde die niet nul is, was 19.0 .
- Vierde regel: De eerste waarde die niet nul is, was 9,0 .
- Vijfde regel: De eerste waarde die niet nul is, was 14,0 .
Methode 2: Waarden samenvoegen met behulp van een specifieke kolomvolgorde
De volgende code laat zien hoe u de waarden in de drie kolommen kunt samenvoegen door de kolommen in de volgende volgorde te analyseren: assists, rebounds, punten.
#coalesce values in specific column order
df[' coalesce '] = df[[' assists ', ' rebounds ', ' points ']]. 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
Hier is de logica die werd gebruikt om te beslissen welke waarde in de samenvoegkolom moet worden geplaatst:
- Als de waarde in de helperkolom niet nul is, gebruik dan die waarde.
- Anders kunt u die waarde gebruiken als de waarde in de kolom ‚Buitenposts‘ niet nul is.
- Als de waarde in de puntenkolom niet nul is, gebruik dan die waarde.
Opmerking : u kunt hier de volledige documentatie voor de functie bfill() vinden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in panda’s kunt uitvoeren:
Hoe twee kolommen in Panda’s te combineren
Hoe specifieke kolommen in Panda’s op te tellen
Hoe te sorteren op meerdere kolommen in Pandas