Data Wrangling

Pandas meistern: Fünf effiziente Wege, Text-Spalten zu kombinieren

Spread the love

Das effiziente Kombinieren von Textspalten ist eine entscheidende Aufgabe bei der Datenmanipulation. Dieser Artikel präsentiert fünf effektive Pandas-Methoden zum Verketten von String-Spalten innerhalb eines DataFrames und hebt deren Stärken und Schwächen hervor, um Sie bei der Auswahl des optimalen Ansatzes für Ihre spezifischen Bedürfnisse zu unterstützen.

Inhaltsverzeichnis:

Die + Operator Methode

Dieser unkomplizierte Ansatz verwendet Pythons eingebauten +-Operator für die String-Verkettung. Er ist im Allgemeinen der schnellste für einfache Szenarien, erfordert aber einen sorgfältigen Umgang mit fehlenden Werten (NaN), um TypeError-Ausnahmen zu vermeiden.


import pandas as pd
import numpy as np

data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)

df['combined'] = df['col1'].fillna('') + df['col2'].fillna('')
print(df)

Ausgabe:


  col1 col2 combined
0    A    D      AD
1    B    E      BE
2    C    F      CF
3  NaN    G       G

Series.str.cat() Methode

Series.str.cat() ist speziell für die String-Verkettung entwickelt und verarbeitet fehlende Daten effizient. Sie ermöglicht die Anpassung mit Trennzeichen und NaN-Darstellung.


import pandas as pd
import numpy as np

data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)

df['combined'] = df['col1'].str.cat(df['col2'], sep='-', na_rep='')
print(df)

Ausgabe:


  col1 col2 combined
0    A    D      A-D
1    B    E      B-E
2    C    F      C-F
3  NaN    G      -G

df.apply() Methode

df.apply() bietet Flexibilität für zeilenweise (axis=1) oder spaltenweise (axis=0) Operationen und ermöglicht komplexe Verkettungslogiken. Sie kann jedoch weniger effizient sein als der +-Operator für große DataFrames.


import pandas as pd
import numpy as np

data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)

df['combined'] = df.apply(lambda row: str(row['col1']) + ' ' + str(row['col2']), axis=1)
print(df)

Ausgabe:


  col1 col2 combined
0    A    D      A D
1    B    E      B E
2    C    F      C F
3  NaN    G    nan G

Series.map() Methode

Series.map() bietet eine flexible Möglichkeit, benutzerdefinierte Funktionen für die Verkettung anzuwenden und diverse Szenarien wie bedingte Logik oder spezifische Trennzeichen zu behandeln. Sie ist besonders nützlich für komplexere Verkettungsregeln.


import pandas as pd
import numpy as np

data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)

def combine_strings(x):
  return str(x[0]) + '_' + str(x[1])

df['combined'] = df[['col1', 'col2']].apply(combine_strings, axis=1)
print(df)

Ausgabe:


  col1 col2 combined
0    A    D      A_D
1    B    E      B_E
2    C    F      C_F
3  NaN    G    nan_G

df.agg() Methode

Obwohl hauptsächlich für Aggregationen gedacht, kann df.agg() für die String-Verkettung angepasst werden. Sie ist jedoch im Allgemeinen weniger effizient als andere Methoden für diesen spezifischen Zweck.


import pandas as pd
import numpy as np

data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)

df['combined'] = df.agg(lambda x: str(x['col1']) + ' ' + str(x['col2']), axis=1)
print(df)

Ausgabe (ähnlich zu df.apply()):


  col1 col2 combined
0    A    D      A D
1    B    E      B E
2    C    F      C F
3  NaN    G    nan G

Fazit: Die optimale Methode hängt von Ihren spezifischen Bedürfnissen und der Datensatzgröße ab. Für die einfache Verkettung bietet der +-Operator Geschwindigkeit. Series.str.cat() zeichnet sich durch die effiziente Behandlung fehlender Werte aus. Series.map() und df.apply() bieten größere Flexibilität für komplexe Szenarien, während df.agg() für diese Aufgabe weniger effizient ist.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert