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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow