Comment combiner deux colonnes dans Pandas (avec exemples)
Vous pouvez utiliser la syntaxe suivante pour combiner deux colonnes de texte en une seule dans un DataFrame pandas :
df['new_column'] = df['column1'] + df['column2']
Si l’une des colonnes n’est pas déjà une chaîne, vous pouvez la convertir à l’aide de la commande astype(str) :
df['new_column'] = df['column1'].astype(str) + df['column2']
Et vous pouvez utiliser la syntaxe suivante pour combiner plusieurs colonnes de texte en une seule :
df['new_column'] = df[['col1', 'col2', 'col3', ...]].agg(' '.join, axis=1)
Les exemples suivants montrent comment combiner des colonnes de texte dans la pratique.
Exemple 1 : combiner deux colonnes
Le code suivant montre comment combiner deux colonnes de texte en une seule dans un DataFrame pandas :
import pandas as pd #create dataFrame df = pd.DataFrame({'team': ['Mavs', 'Lakers', 'Spurs', 'Cavs'], 'first': ['Dirk', 'Kobe', 'Tim', 'Lebron'], 'last': ['Nowitzki', 'Bryant', 'Duncan', 'James'], 'points': [26, 31, 22, 29]}) #combine first and last name column into new column, with space in between df['full_name'] = df['first'] + ' ' + df['last'] #view resulting dataFrame df team first last points full_name 0 Mavs Dirk Nowitzki 26 Dirk Nowitzki 1 Lakers Kobe Bryant 31 Kobe Bryant 2 Spurs Tim Duncan 22 Tim Duncan 3 Cavs Lebron James 29 Lebron James
Nous avons joint la colonne du prénom et du nom avec un espace entre les deux, mais nous pourrions également utiliser un séparateur différent tel qu’un tiret :
#combine first and last name column into new column, with dash in between df['full_name'] = df['first'] + '-' + df['last'] #view resulting dataFrame df team first last points full_name 0 Mavs Dirk Nowitzki 26 Dirk-Nowitzki 1 Lakers Kobe Bryant 31 Kobe-Bryant 2 Spurs Tim Duncan 22 Tim-Duncan 3 Cavs Lebron James 29 Lebron-James
Exemple 2 : convertir en texte et combiner deux colonnes
Le code suivant montre comment convertir une colonne en texte, puis la joindre à une autre colonne :
import pandas as pd #create dataFrame df = pd.DataFrame({'team': ['Mavs', 'Lakers', 'Spurs', 'Cavs'], 'first': ['Dirk', 'Kobe', 'Tim', 'Lebron'], 'last': ['Nowitzki', 'Bryant', 'Duncan', 'James'], 'points': [26, 31, 22, 29]}) #convert points to text, then join to last name column df['name_points'] = df['last'] + df['points'].astype(str) #view resulting dataFrame df team first last points name_points 0 Mavs Dirk Nowitzki 26 Nowitzki26 1 Lakers Kobe Bryant 31 Bryant31 2 Spurs Tim Duncan 22 Duncan22 3 Cavs Lebron James 29 James29
Exemple 3 : combiner plus de deux colonnes
Le code suivant montre comment joindre plusieurs colonnes en une seule :
import pandas as pd #create dataFrame df = pd.DataFrame({'team': ['Mavs', 'Lakers', 'Spurs', 'Cavs'], 'first': ['Dirk', 'Kobe', 'Tim', 'Lebron'], 'last': ['Nowitzki', 'Bryant', 'Duncan', 'James'], 'points': [26, 31, 22, 29]}) #join team, first name, and last name into one column df['team_and_name'] = df[['team', 'first', 'last']].agg(' '.join, axis=1) #view resulting dataFrame df team first last points team_name 0 Mavs Dirk Nowitzki 26 Mavs Dirk Nowitzki 1 Lakers Kobe Bryant 31 Lakers Kobe Bryant 2 Spurs Tim Duncan 22 Spurs Tim Duncan 3 Cavs Lebron James 29 Cavs Lebron James
Ressources additionnelles
Pandas : comment trouver la différence entre deux colonnes
Pandas : comment trouver la différence entre deux lignes
Pandas : comment trier les colonnes par nom