Skip to content

pandas : Manipulation de chaînes de caractères (remplacement, dépouillement, conversion de la casse, etc.)

Vous pouvez utiliser diverses méthodes avec l’accesseur de chaîne (str.xxx()) pour gérer (remplacer, supprimer, etc.) les chaînes de pandas.Series (= une colonne ou une ligne de pandas.DataFrame).

Par exemple, les méthodes suivantes sont disponibles. Vous pouvez appliquer les mêmes méthodes pour les chaînes Python standard (str) à tous les éléments de pandas.Series.

  • Remplacez chaque chaîne dans pandas.Series
  • Dénudez chaque chaîne en pandas.Série
    • str.strip()
    • str.lstrip()
    • str.rstrip()
  • Convertir la casse de chaque chaîne dans pandas.Series
    • str.inférieur()
    • str.supérieur()
    • str. majuscule()
    • str.title()

Remplacez chaque chaîne dans pandas.Series

str.replace()

import pandas as pd

s = pd.Series([' a-a-x ', ' b-x-b ', ' x-c-c '])
print(s)
# 0     a-a-x 
# 1     b-x-b 
# 2     x-c-c 
# dtype: object

s_new = s.str.replace('x', 'z')
print(s_new)
# 0     a-a-z 
# 1     b-z-b 
# 2     z-c-c 
# dtype: object

Pour mettre à jour une colonne dans pandas.DataFrame, affectez la nouvelle colonne à la colonne d’origine. Il en va de même pour les autres méthodes.

df = pd.DataFrame([[' a-a-x-1 ', ' a-a-x-2 '],
                   [' b-x-b-1 ', ' b-x-b-2 '],
                   [' x-c-c-1 ', ' x-c-c-2 ']],
                  columns=['col1', 'col2'])
print(df)
#         col1       col2
# 0   a-a-x-1    a-a-x-2 
# 1   b-x-b-1    b-x-b-2 
# 2   x-c-c-1    x-c-c-2 

df['col1'] = df['col1'].str.replace('x', 'z')
print(df)
#         col1       col2
# 0   a-a-z-1    a-a-x-2 
# 1   b-z-b-1    b-x-b-2 
# 2   z-c-c-1    x-c-c-2 

Si vous souhaitez remplacer non pas une sous-chaîne mais l’élément lui-même, utilisez la méthode replace() de pandas.DataFrame ou pandas.Series.

Dénudez chaque chaîne en pandas.Série

str.strip()

Par défaut, les caractères d’espacement aux extrémités gauche et droite (= caractères d’espacement de début et de fin) sont supprimés.

s_new = s.str.strip()
print(s_new)
# 0    a-a-x
# 1    b-x-b
# 2    x-c-c
# dtype: object

Vous pouvez spécifier les caractères à supprimer. Les caractères de la chaîne spécifiée sont supprimés. Il en va de même pour str.lstrip() et str.rstrip().

s_new = s.str.strip(' x')
print(s_new)
# 0     a-a-
# 1    b-x-b
# 2     -c-c
# dtype: object

Pour pandas.DataFrame :

df['col1'] = df['col1'].str.strip()
print(df)
#       col1       col2
# 0  a-a-z-1   a-a-x-2 
# 1  b-z-b-1   b-x-b-2 
# 2  z-c-c-1   x-c-c-2 

str.lstrip()

str.lstrip() ne supprime que les caractères du côté gauche.

s_new = s.str.lstrip()
print(s_new)
# 0    a-a-x 
# 1    b-x-b 
# 2    x-c-c 
# dtype: object

str.rstrip()

str.rstrip() ne supprime que les caractères du côté droit.

s_new = s.str.rstrip()
print(s_new)
# 0     a-a-x
# 1     b-x-b
# 2     x-c-c
# dtype: object

Convertir la casse de chaque chaîne dans pandas.Series

Le pandas.DataFrame suivant est utilisé comme exemple.

s = pd.Series(['Hello World', 'hello world', 'HELLO WORLD'])
print(s)
# 0    Hello World
# 1    hello world
# 2    HELLO WORLD
# dtype: object

str.inférieur()

s_new = s.str.lower()
print(s_new)
# 0    hello world
# 1    hello world
# 2    hello world
# dtype: object

str.supérieur()

s_new = s.str.upper()
print(s_new)
# 0    HELLO WORLD
# 1    HELLO WORLD
# 2    HELLO WORLD
# dtype: object

str. majuscule()

s_new = s.str.capitalize()
print(s_new)
# 0    Hello world
# 1    Hello world
# 2    Hello world
# dtype: object

str.title()

s_new = s.str.title()
print(s_new)
# 0    Hello World
# 1    Hello World
# 2    Hello World
# dtype: object