pandas
Manipulation de cordes
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