pandas
String-Manipulation
Suche…
Reguläre Ausdrücke
# 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')
Informationen zum Abgleichen von Zeichenfolgen mithilfe von regulärem Ausdruck finden Sie unter Erste Schritte mit regulären Ausdrücken .
Saiten schneiden
Strings in einer Serie können mit der .str.slice()
Methode oder besser mit Klammern ( .str[]
) geschnitten werden.
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
Holen Sie sich das erste Zeichen jeder Zeichenfolge:
In [3]: ser.str[0]
Out[3]:
0 L
1 d
2 c
dtype: object
Holen Sie sich die ersten drei Zeichen jeder Zeichenfolge:
In [4]: ser.str[:3]
Out[4]:
0 Lor
1 dol
2 con
dtype: object
Holen Sie sich das letzte Zeichen jeder Zeichenfolge:
In [5]: ser.str[-1]
Out[5]:
0 m
1 t
2 t
dtype: object
Holen Sie sich die letzten drei Zeichen jeder Zeichenfolge:
In [6]: ser.str[-3:]
Out[6]:
0 sum
1 met
2 lit
dtype: object
Holen Sie sich alle anderen Zeichen der ersten 10 Zeichen:
In [7]: ser.str[:10:2]
Out[7]:
0 Lrmis
1 dlrst
2 cnett
dtype: object
Pandas verhalten sich beim Umgang mit Slices und Indizes ähnlich wie Python. Wenn sich beispielsweise ein Index außerhalb des Bereichs befindet, gibt Python einen Fehler aus:
In [8]:'Lorem ipsum'[12]
# IndexError: string index out of range
Wenn sich ein Slice außerhalb des Bereichs befindet, wird jedoch eine leere Zeichenfolge zurückgegeben:
In [9]: 'Lorem ipsum'[12:15]
Out[9]: ''
Pandas gibt NaN zurück, wenn ein Index außerhalb des gültigen Bereichs liegt:
In [10]: ser.str[12]
Out[10]:
0 NaN
1 e
2 a
dtype: object
Und gibt einen leeren String zurück, wenn ein Slice außerhalb des Bereichs liegt:
In [11]: ser.str[12:15]
Out[11]:
0
1 et
2 adi
dtype: object
Überprüfen des Inhalts einer Zeichenfolge
str.contains()
-Methode kann verwendet werden, um zu überprüfen, ob in jedem String einer Serie ein Muster vorkommt. str.startswith()
Methoden str.startswith()
und str.endswith()
können auch als speziellere Versionen verwendet werden.
In [1]: animals = pd.Series(['cat', 'dog', 'bear', 'cow', 'bird', 'owl', 'rabbit', 'snake'])
Prüfen Sie, ob Zeichenketten den Buchstaben "a" enthalten:
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
Dies kann als boolescher Index verwendet werden, um nur die Tiere zurückzugeben, die den Buchstaben 'a' enthalten:
In [3]: animals[animals.str.contains('a')]
Out[3]:
0 cat
2 bear
6 rabbit
7 snake
dtype: object
str.startswith
Methoden str.startswith
und str.endswith
funktionieren ähnlich, akzeptieren jedoch auch Tupel als Eingaben.
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
Großschreibung von Strings
In [1]: ser = pd.Series(['lORem ipSuM', 'Dolor sit amet', 'Consectetur Adipiscing Elit'])
Alle in Großbuchstaben umwandeln:
In [2]: ser.str.upper()
Out[2]:
0 LOREM IPSUM
1 DOLOR SIT AMET
2 CONSECTETUR ADIPISCING ELIT
dtype: object
Alles klein geschrieben:
In [3]: ser.str.lower()
Out[3]:
0 lorem ipsum
1 dolor sit amet
2 consectetur adipiscing elit
dtype: object
Schreibe den ersten Buchstaben groß und schreibe den Rest in Kleinbuchstaben:
In [4]: ser.str.capitalize()
Out[4]:
0 Lorem ipsum
1 Dolor sit amet
2 Consectetur adipiscing elit
dtype: object
Wandeln Sie jede Zeichenfolge in ein Titelfeld um (Großbuchstabe des ersten Zeichens jedes Wortes in jeder Zeichenfolge, Kleinschreibung der verbleibenden Zeichen)
In [5]: ser.str.title()
Out[5]:
0 Lorem Ipsum
1 Dolor Sit Amet
2 Consectetur Adipiscing Elit
dtype: object
Tauschen Sie Fälle (konvertieren Sie Kleinbuchstaben in Großbuchstaben und umgekehrt):
In [6]: ser.str.swapcase()
Out[6]:
0 LorEM IPsUm
1 dOLOR SIT AMET
2 cONSECTETUR aDIPISCING eLIT
dtype: object
Abgesehen von diesen Methoden, die die Großschreibung ändern, können verschiedene Methoden zur Überprüfung der Großschreibung von Strings verwendet werden.
In [7]: ser = pd.Series(['LOREM IPSUM', 'dolor sit amet', 'Consectetur Adipiscing Elit'])
Prüfen Sie, ob alles Kleinbuchstaben ist:
In [8]: ser.str.islower()
Out[8]:
0 False
1 True
2 False
dtype: bool
Ist alles in Großbuchstaben:
In [9]: ser.str.isupper()
Out[9]:
0 True
1 False
2 False
dtype: bool
Handelt es sich um eine in einem Titel enthaltene Zeichenfolge:
In [10]: ser.str.istitle()
Out[10]:
0 False
1 False
2 True
dtype: bool