Pandas-Listenspalte: Erstellen einer Zeile für jedes Listenelement
In Pandas-Datenrahmen kann es erforderlich sein, eine Spalte mit Listen zu konvertieren in mehrere Zeilen aufteilen, wobei jedes Element der Liste eine eigene Zeile einnimmt. Um dies zu erreichen, gibt es zwei praktikable Optionen.
Die integrierte Explosionsmethode von Pandas>=0.25
Für Pandas-Versionen 0.25 und höher gilt die .explode( )-Methode wurde speziell für diesen Zweck eingeführt. Es wandelt Listen effizient in einzelne Zeilen um.
df = pd.DataFrame({'trial_num': [1, 2, 3, 1, 2, 3], 'subject': [1, 1, 1, 2, 2, 2], 'samples': [list(np.random.randn(3).round(2)) for i in range(6)] }) df.explode('samples').reset_index(drop=True) # Resetting the index for clarity
Diese Methode verarbeitet gemischte Spalten, die Listen und Skalare sowie leere Listen und NaNs enthalten. Es ist jedoch wichtig zu beachten, dass Explodieren jeweils nur für eine einzelne Spalte ausgeführt wird.
Benutzerdefinierte Funktion für Pandas <0,25
Für frühere Versionen von Pandas, a Eine benutzerdefinierte Funktion kann verwendet werden:
def explode_list_column(df, column): # Create an empty list to store the expanded rows exploded_rows = [] # Iterate through each cell in the specified column for row in df[column]: # Iterate through each element in the list for element in row: # Add a new row to the list, copying data from the current row and adding the new element exploded_rows.append(list(row) + [element]) # Convert the expanded rows into a DataFrame return pd.DataFrame(exploded_rows, columns=df.columns + ['list_element'])
Diese Funktion verwendet einen DataFrame und den Namen der Spalte, die Listen als Parameter enthält, und gibt einen neuen DataFrame mit zurück eine Spalte für jedes Listenelement.
# Applying the exploding function exploded_df = explode_list_column(df, 'samples')
Das obige ist der detaillierte Inhalt vonWie kann ich eine Pandas-Listenspalte in mehrere Zeilen umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!