Teilen Sie eine Pandas DataFrame-Spalte durch ein Trennzeichen

Mehvish Ashiq 21 Juni 2023
Teilen Sie eine Pandas DataFrame-Spalte durch ein Trennzeichen

Die Möglichkeit, die bereitgestellten Daten einfach zu parsen und neue Spalten mit spezifischeren Informationen zu erstellen, ist wertvoll. Ein solches Szenario ist, wenn wir eine Pandas-Datenrahmenspalte durch ein Trennzeichen teilen und daraus mehrere Spalten erstellen.

Zum Beispiel haben wir eine Spalte, die Werte enthält, die durch ein Trennzeichen wie A, D, G getrennt sind, und wir möchten diese Werte in mehrere Spalten aufteilen, die A, D und G separat enthalten.

In diesem Tutorial erfahren Sie, wie Sie die Methode str.split() verwenden, um eine Pandas-Datenrahmenspalte durch ein Trennzeichen zu teilen.

Teilen Sie eine Pandas DataFrame-Spalte durch ein Trennzeichen

Bevor Sie sich verschiedenen Beispielen zuwenden, die die Verwendung der Methode str.split() demonstrieren, ist es wichtig, ihre Syntax und mögliche Parameter zu verstehen.

Syntax:

Series.str.split(pat=None, n=-1, expand=False, regex=None)

Es folgt eine kurze Erläuterung der Parameter.

Parameter Erläuterung
pat Es muss sich um einen Zeichenfolgenwert oder einen regulären Ausdruck handeln, der als Trennzeichen zum Teilen der Zeichenfolge verwendet wird. Whitespace wird als Trennzeichen/Trennzeichen verwendet, wenn es nicht angegeben ist.
n Es bezeichnet die maximale Anzahl von Splits in der Ausgabe. n=-1, n=0 und n=None bedeutet, dass alle Splits zurückgegeben werden; standardmäßig ist n auf -1 eingestellt.
expand Es nimmt einen booleschen Wert an, und wenn True, führt dies zu einem Datenrahmen, der unterschiedliche Werte in verschiedenen Spalten enthält; andernfalls eine Reihe mit einer Liste von Zeichenfolgen. Standardmäßig ist expand auf False gesetzt.
regex (Neu in Version 1.4.0) It accepts a Boolean value that tells if the specified pattern is a regex or not; by default, regex is set to None.
True bedeutet, dass das angegebene Muster ein regulärer Ausdruck ist, während False ein String-Literal bedeutet. Es behandelt pat als String-Literal, wenn es auf None gesetzt ist und die pat-Länge 1 ist. Wenn andererseits regex=None und die pat-Länge nicht 1 ist, wird pat als regulärer Ausdruck behandelt.

Wir erhalten einen ValueError, wenn pat der kompilierte reguläre Ausdruck ist und regex auf False gesetzt ist. Mehr dazu können Sie hier lesen.

Lassen Sie uns nun zu Codebeispielen springen, um es zu üben.

Teilen Sie die Spalte full_name in mehrere Spalten auf (first_name & last_name)

Beispielcode:

import pandas as pd

df = pd.DataFrame(
    {
        "full_name": [
            "Mehvish Ashiq",
            "Hania Arif",
            "Zobia Shakeel",
            "Tahir Mukhtar",
            "Mazhar Ali",
        ]
    }
)

print("Before Splitting:\n")
print(df)

df[["first_name", "last_name"]] = df["full_name"].str.split(" ", expand=True)
print("\nAfter Splitting:\n")
print(df)

AUSGANG:

Before Splitting:

       full_name
0  Mehvish Ashiq
1     Hania Arif
2  Zobia Shakeel
3  Tahir Mukhtar
4     Mazhar Ali

After Splitting:

       full_name first_name last_name
0  Mehvish Ashiq    Mehvish     Ashiq
1     Hania Arif      Hania      Arif
2  Zobia Shakeel      Zobia   Shakeel
3  Tahir Mukhtar      Tahir   Mukhtar
4     Mazhar Ali     Mazhar       Ali

Wir können sehen, dass ein Datenrahmen im obigen Code Fence eine Spalte (full_name) mit zufälligen Vornamen und Nachnamen enthält, die durch ein einzelnes Leerzeichen getrennt sind.

Wir teilen full_name in zwei Spalten (first_name und last_name) auf, die den Vornamen und den Nachnamen getrennt enthalten. Dazu haben wir die vektorisierte str.split()-Methode mit expand=True verwendet.

Teilen Sie die Spalte full_name in eine neue Spalte mit einer Liste von Split-Werten

Beispielcode:

import pandas as pd

df = pd.DataFrame(
    {
        "full_name": [
            "Mehvish Ashiq",
            "Hania Arif",
            "Zobia Shakeel",
            "Tahir Mukhtar",
            "Mazhar Ali",
        ]
    }
)

print("Before Splitting:\n")
print(df)

df["[first_name,last_name]"] = df["full_name"].str.split(" ", expand=False)
print("\nAfter Splitting:\n")
print(df)

AUSGANG:

Before Splitting:

       full_name
0  Mehvish Ashiq
1     Hania Arif
2  Zobia Shakeel
3  Tahir Mukhtar
4     Mazhar Ali

After Splitting:

       full_name [first_name,last_name]
0  Mehvish Ashiq       [Mehvish, Ashiq]
1     Hania Arif          [Hania, Arif]
2  Zobia Shakeel       [Zobia, Shakeel]
3  Tahir Mukhtar       [Tahir, Mukhtar]
4     Mazhar Ali          [Mazhar, Ali]

Dieser Codezaun ist dem vorherigen ähnlich, mit Ausnahme eines Unterschieds. Hier setzen wir expand auf False, um eine Spalte mit einer Liste von aufgeteilten Werten zu erstellen.

Teilen Sie die Spalte full_name, indem Sie die maximale Anzahl der Teilungen angeben

Beispielcode:

import pandas as pd

df = pd.DataFrame(
    {
        "full_name": [
            "Mehvish Ashiq Hussain",
            "Hania Arif Ali",
            "Zobia Shakeel Amjad",
            "Tahir Mukhtar Ahmed",
            "Mazhar Ali Azhar",
        ]
    }
)

print("Before Splitting:\n")
print(df)


print("\nAfter Splitting:\n")
print(df["full_name"].str.split(" ", n=1, expand=True))

AUSGANG:

Before Splitting:

               full_name
0  Mehvish Ashiq Hussain
1         Hania Arif Ali
2    Zobia Shakeel Amjad
3    Tahir Mukhtar Ahmed
4       Mazhar Ali Azhar

After Splitting:

         0              1
0  Mehvish  Ashiq Hussain
1    Hania       Arif Ali
2    Zobia  Shakeel Amjad
3    Tahir  Mukhtar Ahmed
4   Mazhar      Ali Azhar

Hier setzen wir n auf 1, um maximal einen Split zu erhalten. In diesem Beispiel konzentrieren wir uns darauf, nur die Vornamen zu erhalten.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Verwandter Artikel - Pandas DataFrame Column