Skip to content

pandas: Teilzeichenketten aus jedem Element in Spalten zerschneiden

Python

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