Recherche…


Expressions régulières

# Extract strings with a specific regex
df= df['col_name'].str.extract[r'[Aa-Zz]']

# Replace strings within a regex
df['col_name'].str.replace('Replace this', 'With this')

Pour plus d'informations sur la manière de faire correspondre les chaînes à l'aide de l'expression rationnelle, voir Mise en route avec les expressions régulières .

Ficelle

Les chaînes d'une série peuvent être découpées en utilisant la méthode .str.slice() , ou plus facilement, entre parenthèses ( .str[] ).

In [1]: ser = pd.Series(['Lorem ipsum', 'dolor sit amet', 'consectetur adipiscing elit'])
In [2]: ser
Out[2]: 
0                    Lorem ipsum
1                 dolor sit amet
2    consectetur adipiscing elit
dtype: object 

Obtenez le premier caractère de chaque chaîne:

In [3]: ser.str[0]
Out[3]: 
0    L
1    d
2    c
dtype: object

Obtenez les trois premiers caractères de chaque chaîne:

In [4]: ser.str[:3]
Out[4]: 
0    Lor
1    dol
2    con
dtype: object

Récupère le dernier caractère de chaque chaîne:

In [5]: ser.str[-1]
Out[5]:
0    m
1    t
2    t
dtype: object

Obtenez les trois derniers caractères de chaque chaîne:

In [6]: ser.str[-3:]
Out[6]: 
0    sum
1    met
2    lit
dtype: object

Obtenez tous les autres caractères des 10 premiers caractères:

In [7]: ser.str[:10:2]
Out[7]: 
0    Lrmis
1    dlrst
2    cnett
dtype: object

Pandas se comporte de la même manière que Python lors de la manipulation de tranches et d’index. Par exemple, si un index est en dehors de la plage, Python génère une erreur:

In [8]:'Lorem ipsum'[12]
# IndexError: string index out of range

Cependant, si une tranche est en dehors de la plage, une chaîne vide est renvoyée:

In [9]: 'Lorem ipsum'[12:15]
Out[9]: ''

Pandas renvoie NaN lorsqu'un index est hors limites:

In [10]: ser.str[12]
Out[10]:
0    NaN
1      e
2      a
dtype: object

Et renvoie une chaîne vide si une tranche est hors limites:

In [11]: ser.str[12:15]
Out[11]:
0       
1     et
2    adi
dtype: object

Vérification du contenu d'une chaîne

str.contains() méthode str.contains() peut être utilisée pour vérifier si un motif se produit dans chaque chaîne d'une série. str.startswith() et str.endswith() peuvent également être utilisées comme versions plus spécialisées.

In [1]: animals = pd.Series(['cat', 'dog', 'bear', 'cow', 'bird', 'owl', 'rabbit', 'snake'])

Vérifiez si les chaînes contiennent la lettre 'a':

In [2]: animals.str.contains('a')
Out[2]:
0      True
1     False
2      True
3     False
4     False
5     False
6      True
7      True
8      True
dtype: bool

Ceci peut être utilisé comme un index booléen pour ne renvoyer que les animaux contenant la lettre 'a':

In [3]: animals[animals.str.contains('a')]
Out[3]: 
0       cat
2      bear
6    rabbit
7     snake
dtype: object

str.startswith méthodes str.startswith et str.endswith fonctionnent de manière similaire, mais elles acceptent également les tuples comme entrées.

In [4]: animals[animals.str.startswith(('b', 'c'))]
# Returns animals starting with 'b' or 'c'
Out[4]: 
0     cat
2    bear
3     cow
4    bird
dtype: object

Capitalisation de chaînes

In [1]: ser = pd.Series(['lORem ipSuM', 'Dolor sit amet', 'Consectetur Adipiscing Elit'])

Convertir tout en majuscule:

In [2]: ser.str.upper()
Out[2]:
0                    LOREM IPSUM
1                 DOLOR SIT AMET
2    CONSECTETUR ADIPISCING ELIT
dtype: object

Tout en minuscule:

In [3]: ser.str.lower()
Out[3]:
0                    lorem ipsum
1                 dolor sit amet
2    consectetur adipiscing elit
dtype: object

Capitaliser le premier caractère et minuscule le reste:

In [4]: ser.str.capitalize()
Out[4]:
0                    Lorem ipsum
1                 Dolor sit amet
2    Consectetur adipiscing elit
dtype: object

Convertissez chaque chaîne en une titlecase (mettez en majuscule le premier caractère de chaque mot dans chaque chaîne, minuscule le reste):

In [5]: ser.str.title()
Out[5]:
0                    Lorem Ipsum
1                 Dolor Sit Amet
2    Consectetur Adipiscing Elit
dtype: object

Permuter les cas (convertir les minuscules en majuscules et vice versa):

In [6]: ser.str.swapcase()
Out[6]:
0                    LorEM IPsUm
1                 dOLOR SIT AMET
2    cONSECTETUR aDIPISCING eLIT
dtype: object

Outre ces méthodes qui modifient la capitalisation, plusieurs méthodes peuvent être utilisées pour vérifier la capitalisation des chaînes.

In [7]: ser = pd.Series(['LOREM IPSUM', 'dolor sit amet', 'Consectetur Adipiscing Elit'])

Vérifiez si tout est en minuscule:

In [8]: ser.str.islower()
Out[8]:
0    False
1     True
2    False
dtype: bool

Est-ce tout en majuscule:

In [9]: ser.str.isupper()
Out[9]:
0     True
1    False
2    False
dtype: bool

Est-ce une chaîne titlecased:

In [10]: ser.str.istitle()
Out[10]:
0    False
1    False
2     True
dtype: bool


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow