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

Einen Kommentar hinzufügen

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