pandas
String manipulatie
Zoeken…
Normale uitdrukkingen
# 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')
Zie Aan de slag met reguliere expressies voor informatie over het matchen van tekenreeksen met regex.
Snaren knippen
.str.slice()
in een serie kunnen worden gesegmenteerd met behulp van de .str.slice()
methode, of gemakkelijker, met behulp van haakjes ( .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
Krijg het eerste karakter van elke string:
In [3]: ser.str[0]
Out[3]:
0 L
1 d
2 c
dtype: object
Krijg de eerste drie karakters van elke string:
In [4]: ser.str[:3]
Out[4]:
0 Lor
1 dol
2 con
dtype: object
Krijg het laatste karakter van elke string:
In [5]: ser.str[-1]
Out[5]:
0 m
1 t
2 t
dtype: object
Krijg de laatste drie karakters van elke string:
In [6]: ser.str[-3:]
Out[6]:
0 sum
1 met
2 lit
dtype: object
Verkrijg het om de andere karakter van de eerste 10 karakters:
In [7]: ser.str[:10:2]
Out[7]:
0 Lrmis
1 dlrst
2 cnett
dtype: object
Panda's gedragen zich op dezelfde manier als Python bij het verwerken van plakjes en indices. Als een index bijvoorbeeld buiten het bereik valt, geeft Python een foutmelding:
In [8]:'Lorem ipsum'[12]
# IndexError: string index out of range
Als een segment echter buiten het bereik valt, wordt een lege tekenreeks geretourneerd:
In [9]: 'Lorem ipsum'[12:15]
Out[9]: ''
Panda's retourneert NaN wanneer een index buiten bereik is:
In [10]: ser.str[12]
Out[10]:
0 NaN
1 e
2 a
dtype: object
En geeft een lege string terug als een segment buiten bereik is:
In [11]: ser.str[12:15]
Out[11]:
0
1 et
2 adi
dtype: object
Zoeken naar inhoud van een string
str.contains()
methode str.contains()
kan worden gebruikt om te controleren of er een patroon voorkomt in elke reeks van een serie. str.startswith()
en str.endswith()
kunnen ook worden gebruikt als meer gespecialiseerde versies.
In [1]: animals = pd.Series(['cat', 'dog', 'bear', 'cow', 'bird', 'owl', 'rabbit', 'snake'])
Controleer of strings de letter 'a' bevatten:
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
Dit kan worden gebruikt als een Booleaanse index om alleen de dieren met de letter 'a' terug te geven:
In [3]: animals[animals.str.contains('a')]
Out[3]:
0 cat
2 bear
6 rabbit
7 snake
dtype: object
str.startswith
en str.endswith
methoden werken op dezelfde manier, maar ze accepteren ook tuples als invoer.
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
Hoofdlettergebruik van tekenreeksen
In [1]: ser = pd.Series(['lORem ipSuM', 'Dolor sit amet', 'Consectetur Adipiscing Elit'])
Alles omzetten in hoofdletters:
In [2]: ser.str.upper()
Out[2]:
0 LOREM IPSUM
1 DOLOR SIT AMET
2 CONSECTETUR ADIPISCING ELIT
dtype: object
Alle kleine letters:
In [3]: ser.str.lower()
Out[3]:
0 lorem ipsum
1 dolor sit amet
2 consectetur adipiscing elit
dtype: object
Hoofdletter het eerste teken en kleine letters de resterende:
In [4]: ser.str.capitalize()
Out[4]:
0 Lorem ipsum
1 Dolor sit amet
2 Consectetur adipiscing elit
dtype: object
Converteer elke string naar een hoofdletter (gebruik het eerste teken van elk woord in elke string, kleine letters de resterende):
In [5]: ser.str.title()
Out[5]:
0 Lorem Ipsum
1 Dolor Sit Amet
2 Consectetur Adipiscing Elit
dtype: object
Wissel van hoofdletter (zet kleine letters om in hoofdletters en omgekeerd):
In [6]: ser.str.swapcase()
Out[6]:
0 LorEM IPsUm
1 dOLOR SIT AMET
2 cONSECTETUR aDIPISCING eLIT
dtype: object
Afgezien van deze methoden die het hoofdlettergebruik wijzigen, kunnen verschillende methoden worden gebruikt om het hoofdlettergebruik van tekenreeksen te controleren.
In [7]: ser = pd.Series(['LOREM IPSUM', 'dolor sit amet', 'Consectetur Adipiscing Elit'])
Controleer of het allemaal kleine letters zijn:
In [8]: ser.str.islower()
Out[8]:
0 False
1 True
2 False
dtype: bool
Is het allemaal hoofdletters:
In [9]: ser.str.isupper()
Out[9]:
0 True
1 False
2 False
dtype: bool
Is het een string uit de titel:
In [10]: ser.str.istitle()
Out[10]:
0 False
1 False
2 True
dtype: bool