Heim > Backend-Entwicklung > Python-Tutorial > Wie kann man durch Kommas getrennte Zeichenfolgen in Pandas-DataFrames effizient aufteilen?

Wie kann man durch Kommas getrennte Zeichenfolgen in Pandas-DataFrames effizient aufteilen?

Linda Hamilton
Freigeben: 2024-12-19 06:18:15
Original
936 Leute haben es durchsucht

How to Efficiently Split Comma-Separated Strings in Pandas DataFrames?

Aufteilen von durch Kommas getrennten Zeichenfolgeneinträgen in Pandas DataFrame

Eingabedaten sind häufig mit Werten strukturiert, die durch Zeichen wie Kommas getrennt sind. Bei der Arbeit mit Pandas-Datenrahmen ist es erforderlich, diese Zeichenfolgeneinträge aufzuteilen und für jeden Wert separate Zeilen zu erstellen. In diesem Artikel werden wir uns mit den verfügbaren Methoden befassen, um dieses Ziel effizient zu erreichen.

Verwendung der .explode()-Methode von Pandas

Eingeführt in den Pandas-Versionen 0.25.0 und 1.3.0 Die Methode .explode() bietet eine unkomplizierte und effiziente Lösung zum Explodieren von Spalten, die Listen oder Arrays enthalten. Es arbeitet sowohl mit einzelnen als auch mit mehreren Spalten und bietet Flexibilität bei der Verarbeitung komplexer Datensätze.

Syntax:

dataframe.explode(column_name)
Nach dem Login kopieren

Beispiel:

import pandas as pd

# Dataframe with a column containing comma-separated values
df = pd.DataFrame({'var1': ['a,b,c', 'd,e,f'], 'var2': [1, 2]})

# Exploding the 'var1' column
df = df.explode('var1')

# Resulting dataframe with separate rows for each value
print(df)
Nach dem Login kopieren

Benutzerdefinierte vektorisierte Funktion zum Auflösen mehrerer Spalten

Für komplexere Szenarien, in denen Wenn mehrere Spalten aufgelöst werden müssen, kann eine benutzerdefinierte vektorisierte Funktion eine vielseitige Lösung bieten:

Funktionsdefinition:

def explode(df, lst_cols, fill_value='', preserve_index=False):
    # Calculate lengths of lists
    lens = df[lst_cols[0]].str.len()

    # Repeat values for non-empty lists
    res = (pd.DataFrame({
                col:np.repeat(df[col].values, lens)
                for col in df.columns.difference(lst_cols)},
                index=np.repeat(df.index.values, lens))
             .assign(**{col:np.concatenate(df.loc[lens>0, col].values)
                            for col in lst_cols}))

    # Append rows with empty lists
    if (lens == 0).any():
        res = (res.append(df.loc[lens==0, df.columns.difference(lst_cols)], sort=False)
                  .fillna(fill_value))

    # Revert index order and reset index if requested
    res = res.sort_index()
    if not preserve_index:
        res = res.reset_index(drop=True)
    return res
Nach dem Login kopieren

Beispiel:

# Dataframe with multiple columns containing lists
df = pd.DataFrame({
    'var1': [['a', 'b'], ['c', 'd']],
    'var2': [['x', 'y'], ['z', 'w']]
})

# Exploding 'var1' and 'var2' columns
df = explode(df, ['var1', 'var2'])

# Resulting dataframe with separate rows for each list item
print(df)
Nach dem Login kopieren

Transformieren durch Gruppieren

Ein anderer Ansatz beinhaltet die Verwendung von .transform() zum Anwenden eine benutzerdefinierte Funktion, die die Zeichenfolgeneinträge aufteilt und neue Zeilen erstellt:

Benutzerdefinierte Funktion:

def split_fun(row):
    return [row['var1'].split(',')]
Nach dem Login kopieren

Beispiel:

# Dataframe with a column containing comma-separated values
df = pd.DataFrame({'var1': ['a,b,c', 'd,e,f'], 'var2': [1, 2]})

# Creating a new column with split values using transform
df['var1_split'] = df.transform(split_fun)

# Unnest the newly created column to separate rows
df = df.unnest('var1_split')

# Resulting dataframe with separate rows for each value
print(df)
Nach dem Login kopieren

Fazit

Abhängig von den spezifischen Anforderungen und der Komplexität des Datensatzes können unterschiedliche Methoden zur Aufteilung eingesetzt werden Durch Kommas getrennte Zeichenfolgeneinträge in Pandas-Datenrahmen. Die Verwendung der Methode .explode() bietet einen unkomplizierten und effizienten Ansatz, während benutzerdefinierte vektorisierte Funktionen Flexibilität für die Handhabung komplexerer Szenarien bieten.

Das obige ist der detaillierte Inhalt vonWie kann man durch Kommas getrennte Zeichenfolgen in Pandas-DataFrames effizient aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage