Panda's: kolommen met dezelfde naam samenvoegen
U kunt de volgende basissyntaxis gebruiken om kolommen samen te voegen in een Panda DataFrame die dezelfde kolomnaam delen:
#define function to merge columns with same names together def same_merge (x): return ' , '. join (x[ x.notnull ()]. astype (str)) #define new DataFrame that merges columns with same names together df_new = df. groupby (level= 0 , axis= 1 ). apply ( lambda x: x.apply (same_merge,axis= 1 ))
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: kolommen met dezelfde naam samenvoegen in Panda’s
Stel dat we de volgende panda’s DataFrame hebben:
import pandas as pd import numpy as np #createDataFrame df = pd. DataFrame ({' A ': [5, 6, 8, np.nan, 4, np.nan, np.nan], ' A1 ': [np.nan, 12, np.nan, 10, np.nan, 6, 4], ' B ': [2, 7, np.nan, np.nan, 2, 4, np.nan], ' B1 ': [5, np.nan, 6, 15, 1, np.nan, 4]}) #rename columns so there are duplicate column names df. columns = [' A ', ' A ', ' B ', ' B '] #view DataFrame print (df) AABB 0 5.0 NaN 2.0 5.0 1 6.0 12.0 7.0 NaN 2 8.0 NaN NaN 6.0 3 NaN 10.0 NaN 15.0 4 4.0 NaN 2.0 1.0 5 NaN 6.0 4.0 NaN 6 NaN 4.0 NaN 4.0
Merk op dat twee kolommen de naam ‚A‘ hebben en twee kolommen de naam ‚B‘.
We kunnen de volgende code gebruiken om kolommen met dezelfde kolomnamen samen te voegen en hun waarden samen te voegen met een komma:
#define function to merge columns with same names together def same_merge (x): return ' , '. join (x[ x.notnull ()]. astype (str)) #define new DataFrame that merges columns with same names together df_new = df. groupby (level= 0 , axis= 1 ). apply ( lambda x: x.apply (same_merge,axis= 1 )) #view new DataFrame print (df_new) AB 0 5.0 2.0,5.0 1 6.0,12.0 7.0 2 8.0 6.0 3 10.0 15.0 4 4.0 2.0,1.0 5 6.0 4.0 6 4.0 4.0
Het nieuwe DataFrame voegde kolommen met dezelfde namen samen en voegde hun waarden samen met een komma.
Als u een ander scheidingsteken wilt gebruiken, vervangt u eenvoudigweg het kommascheidingsteken door iets anders in de functie same_merge() .
De volgende code laat bijvoorbeeld zien hoe u in plaats daarvan een puntkommascheidingsteken gebruikt:
#define function to merge columns with same names together def same_merge (x): return ' ; '. join (x[ x.notnull ()]. astype (str)) #define new DataFrame that merges columns with same names together df_new = df. groupby (level= 0 , axis= 1 ). apply ( lambda x: x.apply (same_merge,axis= 1 )) #view new DataFrame print (df_new) AB 0 5.0 2.0;5.0 1 6.0;12.0 7.0 2 8.0 6.0 3 10.0 15.0 4 4.0 2.0;1.0 5 6.0 4.0 6 4.0 4.0
Het nieuwe DataFrame voegde kolommen met dezelfde namen samen en voegde hun waarden samen met een puntkomma.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in panda’s kunt uitvoeren:
Hoe dubbele kolommen in Pandas te verwijderen
Hoe u alle kolomnamen in Panda’s kunt weergeven
Hoe kolommen op naam te sorteren in Pandas