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.
Verwandter Artikel - Pandas DataFrame Column
- Wie man Pandas DataFrame-Spaltenüberschriften als Liste erhält
- Pandas DataFrame-Spalte löschen
- Wie man DataFrame-Spalte in Datetime in Pandas konvertiert
- So erhalten Sie die Summe der Pandas-Spalte
- Wie man die Reihenfolge der Pandas DataFrame-Spalten ändert
- Wie man eine DataFrame-Spalte in eine Zeichenkette in Pandas konvertiert