Sie können Python-String-Methoden (str) auf die pandas.DataFrame-Spalte (= pandas.Series) mit .str (str-Accessor) anwenden.
In diesem Artikel WIRD beschrieben, wie Teilzeichenfolgen beliebiger Länge von beliebiger Position ausgeschnitten werden, um eine neue Spalte zu generieren.
- Schneiden Sie Teilstrings von jedem Element in pandas.Series ab
- Extrahieren Sie einen Kopf einer Zeichenfolge
- Extrahieren Sie ein Ende einer Zeichenfolge
- Schritt angeben
- Extrahieren Sie ein einzelnes Zeichen mit Index
- Als neue Spalte zu pandas.DataFrame hinzufügen
- Konvertieren Sie numerische Werte in Zeichenfolgen und schneiden Sie sie
Siehe den folgenden Artikel für die klassische Verwendung von Slices in Python.
Im following Artikel erfahren Sie, wie SIE ein Segment auf pandas.DataFrame anwenden, um Zeilen und Spalten auswählen.
Der folgende pandas.DataFrame wird als Beispiel verwendet.
import pandas as pd
df = pd.DataFrame({'a': ['abcde', 'fghij', 'klmno'],
'b': [123, 456, 789]})
print(df)
# a b
# 0 abcde 123
# 1 fghij 456
# 2 klmno 789
print(df.dtypes)
# a object
# b int64
# dtype: object
Schneiden Sie Teilstrings von jedem Element in pandas.Series ab
Sie können mit .str[] für Spalten von str aufteilen.
print(df['a'].str[:2])
# 0 ab
# 1 fg
# 2 kl
# Name: a, dtype: object
Sie können die Position vom Ende mit einem Wert negativ angeben.
print(df['a'].str[-2:])
# 0 de
# 1 ij
# 2 no
# Name: a, dtype: object
Schritt angeben
Sie können einen Schritt wie start:stop:step angeben.
print(df['a'].str[::2])
# 0 ace
# 1 fhj
# 2 kmo
# Name: a, dtype: object
Zusätzlich zum Slicing kann ein einzelnes Zeichen pro Index extrahiert werden.
print(df['a'].str[2])
# 0 c
# 1 h
# 2 m
# Name: a, dtype: object
print(df['a'].str[0])
# 0 a
# 1 f
# 2 k
# Name: a, dtype: object
print(df['a'].str[-1])
# 0 e
# 1 j
# 2 o
# Name: a, dtype: object
Als neue Spalte zu pandas.DataFrame hinzufügen
Sie können die extrahierte Spalte pandas.DataFrame als neue Spalte hinzufügen.
df['a_head'] = df['a'].str[:2]
print(df)
# a b a_head
# 0 abcde 123 ab
# 1 fghij 456 fg
# 2 klmno 789 kl
Konvertieren Sie numerische Werte in Zeichenfolgen und schneiden Sie sie
Die Verwendung des str-Accessors (.str) für eine Nicht-String-Spalte löst einen AttributeError-Fehler aus.
# print(df['b'].str[:2])
# AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas
Sie können die Methode astype() verwenden, um sie in die Zeichenfolge umzuwandeln.
print(df['b'].astype(str).str[:2])
# 0 12
# 1 45
# 2 78
# Name: b, dtype: object
Wenn Sie es als Zahl behandeln möchten, wenden Sie erneut astype() an.
print(df['b'].astype(str).str[:2].astype(int))
# 0 12
# 1 45
# 2 78
# Name: b, dtype: int64