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
Linda HamiltonOriginal
2024-12-19 06:18:15944Durchsuche

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)

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)

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

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)

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(',')]

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)

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!

Stellungnahme:
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