Comment créer une nouvelle colonne avec des initiales à partir d'une colonne de noms avec pandas ?

Exemple de comment créer une nouvelle colonne avec des initiales à partir d'une colonne de noms avec pandas:

Créer une dataframe avec pandas

Commençons par créer une dataframe avec pandas comprenant une colonne avec des noms complets :

import pandas as pd
import numpy as np

data = {'Full_Name':['April Reiter','Emory Miller','David Ballin','Alice Trotter','Virginia Rios']}

df = pd.DataFrame(data=data)

print(df)

donne

             Full_Name
0   April Reiter
1   Emory Miller
2   David Ballin
3  Alice Trotter
4  Virginia Rios

Créer une nouvelle colonne avec des initiales

Voyons maintenant étape par étape comment extraire les initiales de la colonne Full_Name :

Étape 1: séparer les noms et prénoms à l'aide pandas.Series.str.split:

df['Full_Name'].str.split(expand=True)

donne

                    0        1
0     April   Reiter
1     Emory   Miller
2     David   Ballin
3     Alice  Trotter
4  Virginia     Rios

Étape 2: extraire la première lettre de chaque colonne :

df['Full_Name'].str.split(expand=True).apply(lambda x : x.str[0])

donne

     0  1
0  A  R
1  E  M
2  D  B
3  A  T
4  V  R

Étape 3: agréger les colonnes 0 et 1 :

df['Full_Name'].str.split(expand=True).apply(lambda x : x.str[0]).agg('.'.join, axis=1)

donne

0    A.R
1    E.M
2    D.B
3    A.T
4    V.R
dtype: object

Étape 4: Créons une nouvelle colonne pour stocker les initiales :

df['Initials'] = df['Full_Name'].str.split(expand=True).apply(lambda x : x.str[0]).agg('.'.join, axis=1)

donne

             Full_Name Initials
0   April Reiter      A.R
1   Emory Miller      E.M
2   David Ballin      D.B
3  Alice Trotter      A.T
4  Virginia Rios      V.R

done !

Références