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

Einen Kommentar hinzufügen

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